原文:
根據資料庫記錄動态生成C#類及其公共屬性并動态執行的解決方案問題:
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反射。