Heim >Backend-Entwicklung >C++ >Wie können Aufzählungen dynamisch aus einer Datenbank-Nachschlagetabelle generiert werden?

Wie können Aufzählungen dynamisch aus einer Datenbank-Nachschlagetabelle generiert werden?

Barbara Streisand
Barbara StreisandOriginal
2025-01-12 06:50:42665Durchsuche

How Can Enums Be Dynamically Generated from a Database Lookup Table?

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

  • Ändern Sie die Build-Reihenfolge, um sicherzustellen, dass das Projekt „EnumeratedTypes“ zuerst erstellt wird, um Build-Fehler zu verhindern, wenn „MyEnums.dll“ gelöscht wird.
  • Weitere Informationen zur dynamischen Codegenerierung finden Sie im MSDN-Artikel.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn