请教如何动态创建属性相同但类名不同的类?
要返回一些代码表,结构都是一样的 DM,MC,等
传的参数 例如 "MZB,ZWZCB,XBB,,,," 或者全部
根据传的参数 在库中各个代码表查询到数据后,封装到一个总的类里,用户传几个表名,就返回几个表
我现在这么建的:
public class SqxxModel
{
public SqxxModel()
{
}
private int _flag;
private string _errInfo;
private List<MZB> mzList = new List<MZB>();
private List<ZWZCB> zwzcList = new List<ZWZCB>();
。。。。。列全了所有代码表的类
public void AddCjsqxxs(MZ mz)
{
mzList.Add(mz);
}
public void AddYxzjxxs(ZWZCB zwzc)
{
zwzcList.Add(zwzc);
}
。。。。。。列全了所有加入代码表的方法
}
举一个民族的例子,其他代码表的结构都一样,都是DM,MC
public class MZ
{
public MZ()
{
}
private string _DM;
private string _MC;
public string DM
{
get { return _DM; }
set { _DM= value; }
}
public string MC
{
get { return _MC; }
set { _MC= value; }
}
====
以上这么写感觉太多,需要开发时列出所有的代码表,感觉太累赘,能不能根据用户传的参数,有几个代码表就动态创建这几个代码表的类?总类就加载几个代码表的类
------解决方案--------------------用反射。或者用泛型,将这些类从同一个类继承,并且作为泛型约束。
------解决方案--------------------
呵呵,好熟悉的代码命名规则,楼主一定来自北四环中路211号吧。
方法应该有好多
一种是,既然所有代码表都一个结构,不如创建一个通用代码表结构类和一个集合类
简单实现如下
public class DMBStructure
{
public DMBStructure()
{
}
private string _DM;
private string _MC;
public string DM
{
get { return _DM; }
set { _DM= value; }
}
public string MC
{
get { return _MC; }
set { _MC= value; }
}
}
public class DMBCollection
{
private string _tableName;
private List<DMBStructure> _items= new List<DMBStructure>();
public string TableName
{
get { return _tableName; }
set { _tableName= value; }
}
public List<DMBStructure> Items
{
get { return _items; }
set { _items= value; }
}
.....
}
然后搂主创建一个管理类,统一管理代码表。你可以在里边搞一个hashtable或者dictionary什么的用来关联DMBCollection类的实例,key就直接是表名就可以了,以便访问时方便。
还有一种方法,可以向你的那样每个代码表一个类,但类是动态生成和编译的,然后用反射调用这些类。
如果楼主担心频繁调用反射影响性能,可以动态生成那些类中方法的委托,然后挂到变量上去调用。动态生成具体技术涉及CodeDom或Emit,楼主可以看下微软的技术文档。
希望对你有帮助:)