天天看點

根據資料庫記錄動态生成C#類及其公共屬性并動态執行的解決方案

原文:

根據資料庫記錄動态生成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反射。