原文:
根据数据库记录动态生成C#类及其公共属性并动态执行的解决方案
{
public string order_no { get; set; }
public int qty { get; set; }
public int ocv1_plan { get; set; }
public int ocv1_A { get; set; }
public int ocv1_Ba { get; set; }
// ....
public int ocv2_plan { get; set; }
public int ocv2_A { get; set; }
public int ocv2_B { get; set; }
// ....
public int ocv2_N { get; set; }
public int ocv3_plan { get; set; }
public int ocv3_A { get; set; }
// ....
public int ocv3_X { get; set; }
public int ocv4_plan { get; set; }
public int ocv4_A { get; set; }
// ....
public int ocv4_T { get; set; }
// ....
}
需要用代码动态生成,因为上面的ocv1,2...以及Rank等级都是从数据库中取记录,有什么样的记录,有多少条记录,不确定,因此需要动态生成。
其中部分公共属性是固定的,而另一部分则是动态的,比如:ocv数字_xxx。
可能有多个不定的ocv数字及_xxx,分别根据一个List<string> listOcv(工序列表)和一个Dictionary<string, string[]> dictRank(等级列表)得到:
List<string> listOcv = new List<string>();
listOcv.Add("ocv1");
listOcv.Add("ocv2");
listOcv.Add("ocv3");
listOcv.Add("ocv4");
//...
Dictionary<string, string[]> dictRank=new Dictionary<string, string[]>();
dictRank.Add("ocv1", new string[]{"plan","A","Ba"});
dictRank.Add("ocv2", new string[]{"plan","A","B", ..., "N"});
dictRank.Add("ocv3", new string[]{"plan","A", ..., "X"});
问题:
C#中,想动态产生这么一个类:
public class StatisticsData{
public string order_no { get; set; }
public int qty { get; set; }
public int ocv1_plan { get; set; }
public int ocv1_A { get; set; }
public int ocv1_Ba { get; set; }
// ....
public int ocv2_plan { get; set; }
public int ocv2_A { get; set; }
public int ocv2_B { get; set; }
// ....
public int ocv2_N { get; set; }
public int ocv3_plan { get; set; }
public int ocv3_A { get; set; }
// ....
public int ocv3_X { get; set; }
public int ocv4_plan { get; set; }
public int ocv4_A { get; set; }
// ....
public int ocv4_T { get; set; }
// ....
}
需要用代码动态生成,因为上面的ocv1,2...以及Rank等级都是从数据库中取记录,有什么样的记录,有多少条记录,不确定,因此需要动态生成。
其中部分公共属性是固定的,而另一部分则是动态的,比如:ocv数字_xxx。
可能有多个不定的ocv数字及_xxx,分别根据一个List<string> listOcv(工序列表)和一个Dictionary<string, string[]> dictRank(等级列表)得到:
List<string> listOcv = new List<string>();
listOcv.Add("ocv1");
listOcv.Add("ocv2");
listOcv.Add("ocv3");
listOcv.Add("ocv4");
//...
Dictionary<string, string[]> dictRank=new Dictionary<string, string[]>();
dictRank.Add("ocv1", new string[]{"plan","A","Ba"});
dictRank.Add("ocv2", new string[]{"plan","A","B", ..., "N"});
dictRank.Add("ocv3", new string[]{"plan","A", ..., "X"});
dictRank.Add("ocv4", new string[]{"plan","A", ..., "T"});
思考其解决方案,提示:用DynamicObject 类继承或.net反射。