मैं यह सटीक काम कर रहा हूं, लेकिन आपको काम करने के लिए कुछ प्रकार की कोड पीढ़ी बनाने की आवश्यकता है।
मेरे समाधान में, मैंने एक प्रोजेक्ट "EnumeratedTypes" जोड़ा। यह एक कंसोल एप्लिकेशन है जो डेटाबेस से सभी मान प्राप्त करता है और उनसे एनम का निर्माण करता है। तब यह सभी सभाओं को एक सभा में बचाता है।
एनम पीढ़ी कोड इस तरह है:
// Get the current application domain for the current thread
AppDomain currentDomain = AppDomain.CurrentDomain;
// Create a dynamic assembly in the current application domain,
// and allow it to be executed and saved to disk.
AssemblyName name = new AssemblyName("MyEnums");
AssemblyBuilder assemblyBuilder = currentDomain.DefineDynamicAssembly(name,
AssemblyBuilderAccess.RunAndSave);
// Define a dynamic module in "MyEnums" assembly.
// For a single-module assembly, the module has the same name as the assembly.
ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule(name.Name,
name.Name + ".dll");
// Define a public enumeration with the name "MyEnum" and an underlying type of Integer.
EnumBuilder myEnum = moduleBuilder.DefineEnum("EnumeratedTypes.MyEnum",
TypeAttributes.Public, typeof(int));
// Get data from database
MyDataAdapter someAdapter = new MyDataAdapter();
MyDataSet.MyDataTable myData = myDataAdapter.GetMyData();
foreach (MyDataSet.MyDataRow row in myData.Rows)
{
myEnum.DefineLiteral(row.Name, row.Key);
}
// Create the enum
myEnum.CreateType();
// Finally, save the assembly
assemblyBuilder.Save(name.Name + ".dll");
समाधान में मेरी अन्य परियोजनाएं इस उत्पन्न विधानसभा का संदर्भ देती हैं। नतीजतन, मैं फिर कोड में डायनामिक एनम का उपयोग कर सकता हूं, इंटेलीजेंस के साथ पूरा कर सकता हूं।
फिर, मैंने एक पोस्ट-बिल्ड इवेंट जोड़ा, ताकि इसके बाद "EnumeratedTypes" प्रोजेक्ट बनाया जाए, यह स्वयं चलता है और "MyEnums.dll" फ़ाइल उत्पन्न करता है।
वैसे, यह बिल्ड ऑर्डर को बदलने में मदद करता है आपके प्रोजेक्ट ताकि "EnumeratedTypes" को पहले बनाया जाए। अन्यथा, एक बार जब आप अपने गतिशील रूप से उत्पन्न .dll का उपयोग करना शुरू करते हैं, तो यदि आप कभी भी .dll हटाए जाते हैं तो आप एक बिल्ड नहीं कर पाएंगे। (चिकन और अंडे की तरह की समस्या - समाधान में आपकी अन्य परियोजनाओं के लिए यह आवश्यक है। ठीक से निर्माण करने के लिए, और जब तक आप अपना समाधान नहीं बना लेते हैं।
मुझे इस msdn लेख से उपरोक्त कोड मिला ।
उम्मीद है की यह मदद करेगा!