我要实现的功能是管理一些不同类别的设备:
各类设备的属性不一样,而且可以由用户来自定义各类设备的属性
例如:
手机类的设备可能会有“品牌”,“型号”,“出厂日期”等属性
存储卡类的设备可能会有“容量”,“类型”等属性
......另外各种设备需要有修改日志,日志的记录可能有(0~n)条。请问为了实现这样的功能,我应该怎么样构建这组类呢
各类设备的属性不一样,而且可以由用户来自定义各类设备的属性
例如:
手机类的设备可能会有“品牌”,“型号”,“出厂日期”等属性
存储卡类的设备可能会有“容量”,“类型”等属性
......另外各种设备需要有修改日志,日志的记录可能有(0~n)条。请问为了实现这样的功能,我应该怎么样构建这组类呢
至于自定义属性,可以使用XML序列化。
===========>
.NET中的反射工厂可以实现加载新的类别
数据库结构如下:
Device表:存放各种类别的设备
ID 自动编号
CID 用户自定义的编号
Name 名称
Status 状态
Category 类别(用此标识是哪类设备,与Device_CustomField_Category表关联)
Holder 持有人
Administrator 管理员Custom_field表:存放所有的自定义属性
ID 编号(自动编号)
Name 名称(显示在窗体中属性名称)
Typ 类型(显示的样式,如文本框,下拉列表,单选框)
DefaultValue 默认值(若是单选,复选,列表框时给一个以","隔开的字符串)
Regexp (字段的匹配正则表达式,用来限制用户输入)
Minlen (最小的长度)
Maxlen (最大的长度)Device_CustomField_Category表:用来关联设备和类别,以表明某自定义属性属于哪个类别
FieldID 自定义属性编号
CategoryID 类别编号
Sequence 这个字段可以不要,主要用来归定自定义属性在显示时的顺序Device_CustomField_Value表:用来存放某个设备的自定义属性的值
FieldID 自定义属性编号
DeviceID 设备编号
Value 自定义属性的值
也可以用工厂来管理这些类。
是动态的,要不然我就不来这里面来问了
我想访问其属性和方法啊,例如访问其动态的属性,还有需要其历史记录,修改某个属性等等,具体你能说说吗?
我觉得你说的想法符合我的要求。
需求还不清楚啊!
就是说要做设备的管理,设备的种类由用户自己定义,各种类别的设备的属性也由用户自己定义(除编号,状态等几个属性每个设备都有)。
请问LZ,这里的“用户”是指开发者还是最终用户
public class AttributeLog
{
public void writeLog()
{
//
} public void readLog()
{
//
}
} public class DeviceAttribute
{
public string name;
public Object value;
public AttributeLog log;
public override string ToString()
{
return name + ":" + value.ToString();
}
} public class Device
{
private System.Collections.Generic.Dictionary<string, DeviceAttribute> attributes = null;
public System.Collections.Hashtable Atttributes
{
get
{
return this.attributes;
}
} public DeviceAttribute this[string attributeName]
{
get
{
return this.attributes[attributeName];
} set
{
this.attributes[attributeName] = value;
}
}
}