Aufzählungen dynamisch aus der Datenbank-Nachschlagetabelle generieren
Wie generiert man automatisch Aufzählungen basierend auf in einer Datenbank-Nachschlagetabelle gespeicherten Werten und hält die Aufzählungen mit der Datenbank synchron, ohne den Code manuell zu ändern? Dies ist eine häufige Frage.
Lösungen zur Codegenerierung
Auch wenn eine vollständige Automatisierung nicht möglich ist, kann die Codegenerierung eine Lösung bieten. Die automatische Generierung von Aufzählungen kann erreicht werden, indem in der Lösung ein separates Projekt mit dem Namen „EnumeratedTypes“ erstellt wird. Dieses Projekt fungiert als Konsolenanwendung, ruft Werte aus der Datenbank ab, erstellt Aufzählungen aus diesen Werten und speichert sie in einer separaten Assembly.
Verwenden Sie in diesem Codegenerierungsprojekt den folgenden Code, um dynamische Aufzählungen zu definieren und zu füllen:
<code class="language-csharp">// 创建动态程序集 AssemblyName name = new AssemblyName("MyEnums"); AssemblyBuilder assemblyBuilder = currentDomain.DefineDynamicAssembly(name, AssemblyBuilderAccess.RunAndSave); // 定义动态模块 ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule(name.Name, name.Name + ".dll"); // 定义公共枚举 EnumBuilder myEnum = moduleBuilder.DefineEnum("EnumeratedTypes.MyEnum", TypeAttributes.Public, typeof(int)); // 从数据库检索数据 MyDataAdapter someAdapter = new MyDataAdapter(); MyDataSet.MyDataTable myData = myDataAdapter.GetMyData(); // 定义枚举文字 foreach (MyDataSet.MyDataRow row in myData.Rows) { myEnum.DefineLiteral(row.Name, row.Key); } // 创建枚举并保存程序集 myEnum.CreateType(); assemblyBuilder.Save(name.Name + ".dll");</code>
Andere Projekte in der Lösung können auf diese generierte Assembly verweisen und so auf dynamische Aufzählungen zugreifen und IntelliSense-Unterstützung bereitstellen.
Post-Build-Ereignisautomatisierung
Um die automatische Generierung von Aufzählungen sicherzustellen, kann das Projekt „EnumeratedTypes“ ein Post-Build-Ereignis hinzufügen. Dieses Ereignis wird während des Build-Prozesses ausgeführt und generiert die Datei „MyEnums.dll“.
Andere Hinweise
Das obige ist der detaillierte Inhalt vonWie können Aufzählungen dynamisch aus einer Datenbank-Nachschlagetabelle generiert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!