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
Freigeben: 2025-01-12 06:50:42
Original
663 Leute haben es durchsucht

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage