返回首页

我想创建一个UserControl的属性枚举运行。
我用下面的代码创建枚举运行,但我就不能创建一个属性
在C#2010 UserControl的


       static AssemblyBuilder myAssemblyBuilder;

        static ModuleBuilder myModuleBuilder;

        static EnumBuilder myEnumBuilder;

        static void Main(string[] args)

        {

            try

            {

                CreateCallee(Thread.GetDomain(), AssemblyBuilderAccess.Save);

                Type[] myTypeArray = myModuleBuilder.GetTypes();

                foreach (Type myType in myTypeArray)

                {

 Console.WriteLine("Enum Builder defined in the module builder is: "+ myType.Name);

                }

 

                Console.WriteLine("Enum TypeToken is :" +

                                              myEnumBuilder.TypeToken.ToString());

                Console.WriteLine("Enum UnderLyingField is :" +

                                           myEnumBuilder.UnderlyingField.ToString());

                Console.WriteLine("Enum UnderLyingSystemType is :" +

                                     myEnumBuilder.UnderlyingSystemType.ToString());

                Console.WriteLine("Enum GUID is :" + myEnumBuilder.GUID.ToString());

                myAssemblyBuilder.Save("EmittedAssembly.dll");

                Console.Write(myEnumBuilder.GetEnumName(3));

            }

            catch (NotSupportedException ex)

            {

Console.WriteLine("The following is the exception is raised: " + ex.Message);

            }

            catch (Exception e)

            {

Console.WriteLine("The following is the exception raised: " + e.Message);

            }

            Console.ReadLine();

        }

 

        private static void CreateCallee(AppDomain myAppDomain, AssemblyBuilderAccess access)

        {

            // Create a name for the assembly.

            AssemblyName myAssemblyName = new AssemblyName();

            myAssemblyName.Name = "EmittedAssembly";

 

            // Create the dynamic assembly.

            myAssemblyBuilder = myAppDomain.DefineDynamicAssembly(myAssemblyName,

                                                   AssemblyBuilderAccess.Save);

            // Create a dynamic module.

            myModuleBuilder =myAssemblyBuilder.DefineDynamicModule("EmittedModule",

                                                "EmittedModule.mod");

            // Create a dynamic Enum.

            myEnumBuilder = myModuleBuilder.DefineEnum("MyNamespace.MyEnum",

                                       TypeAttributes.Public, typeof(Int32));

 

        FieldBuilder myFieldBuilder1 = myEnumBuilder.DefineLiteral("FieldOne", 1);

         FieldBuilder myFieldBuilder2 = myEnumBuilder.DefineLiteral("FieldTwo", 2);

            myEnumBuilder.DefineLiteral("test",3);

 

            myEnumBuilder.CreateType();

        }

回答

评论会员:游客 时间:2012/02/06
|miladahmadi:没有它的数据库。我想:在一个UserControl,其类型是我创建的枚举和定义属性这是一个动态的枚举。感谢您的帮助
。BillWoodruff
评论会员:游客 时间:2012/02/06
你说:"不为数据库没有的。"我对枚举的内在价值的数据的问题是为了找出如果从数据库中的值。退房"枚举代码发生器-生成枚举代码自动从数据库中查找表"[imgsrc=。和讨论,这对StackOverflow可能您感兴趣的:[{A1}如何,一旦你在运行时,创建一个有效的枚举,你可以声明该枚举类型的UserControl属性的问题是一个非常有趣的。我的猜测...什么是值得的......是,无论你再有使用反射和动态修改内存中的UserControl实例在运行时,或者您有您的UserControl中使用的"动态"的关键字,所以在枚举,从本质上讲,是"后期绑定"。但是,正如你可能知道,枚举是一种特殊的生物,比什么都重要的价值类型,以及是否可以在一个UserControl使用"动态",并获得一个枚举的后期绑定...抱歉地说...是超出我的能力,在技术上我很想知道答案,一个,也运气好,条例草案委员会