예제 #1
0
        public static void Main()
        {
            //演示一:动态生成类。
            #region 演示一:动态生成类。
            //生成一个类t。
            Type t = ClassHelper.BuildType("MyClass");
            #endregion

            //演示二:动态添加属性到类。
            #region 演示二:动态添加属性到类。
            //先定义两个属性。
            List <ClassHelper.CustPropertyInfo> lcpi = new List <ClassHelper.CustPropertyInfo>();
            ClassHelper.CustPropertyInfo        cpi;

            cpi = new ClassHelper.CustPropertyInfo("System.String", "S1");
            lcpi.Add(cpi);
            cpi = new ClassHelper.CustPropertyInfo("System.String", "S2");
            lcpi.Add(cpi);

            //再加入上面定义的两个属性到我们生成的类t。
            t = ClassHelper.AddProperty(t, lcpi);

            //把它显示出来。
            DispProperty(t);

            //再定义两个属性。
            lcpi.Clear();
            cpi = new ClassHelper.CustPropertyInfo("System.Int32", "I1");
            lcpi.Add(cpi);
            cpi = new ClassHelper.CustPropertyInfo("System.Int32", "I2");
            lcpi.Add(cpi);

            //再加入上面定义的两个属性到我们生成的类t。
            t = ClassHelper.AddProperty(t, lcpi);

            //再把它显示出来,看看有没有增加到4个属性。
            DispProperty(t);
            #endregion

            //演示三:动态从类里删除属性。
            #region 演示三:动态从类里删除属性。
            //把'S1'属性从类t中删除。
            t = ClassHelper.DeleteProperty(t, "S1");
            //显示出来,可以看到'S1'不见了。
            DispProperty(t);

            #endregion

            //演示四:动态获取和设置属性值。
            #region 演示四:动态获取和设置属性值。
            //先生成一个类t的实例o。
            object o = ClassHelper.CreateInstance(t);

            //给S2,I2属性赋值。
            ClassHelper.SetPropertyValue(o, "S2", "abcd");
            ClassHelper.SetPropertyValue(o, "I2", 1234);

            //再把S2,I2的属性值显示出来。
            Console.WriteLine("S2 = {0}", ClassHelper.GetPropertyValue(o, "S2"));
            Console.WriteLine("I2 = {0}", ClassHelper.GetPropertyValue(o, "I2"));
            #endregion

            Console.Read();
        }