Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Enum Boleh Dijana Secara Dinamik daripada Jadual Carian Pangkalan Data?

Bagaimanakah Enum Boleh Dijana Secara Dinamik daripada Jadual Carian Pangkalan Data?

Barbara Streisand
Barbara Streisandasal
2025-01-12 06:50:42665semak imbas

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

Jana pengiraan secara dinamik daripada jadual carian pangkalan data

Bagaimana untuk menjana penghitungan secara automatik berdasarkan nilai yang disimpan dalam jadual carian pangkalan data dan memastikan penghitungan disegerakkan dengan pangkalan data tanpa mengubah suai kod secara manual? Ini soalan biasa.

Penyelesaian penjanaan kod

Walaupun ia tidak boleh diautomatikkan sepenuhnya, penjanaan kod boleh memberikan penyelesaian. Penjanaan pengiraan automatik boleh dicapai dengan mencipta projek berasingan yang dipanggil "EnumeratedTypes" dalam penyelesaian. Projek ini bertindak sebagai aplikasi konsol, mendapatkan semula nilai daripada pangkalan data, membina penghitungan daripada nilai tersebut, dan menyimpannya ke dalam perhimpunan berasingan.

Dalam projek penjanaan kod ini, gunakan kod berikut untuk mentakrif dan mengisi penghitungan dinamik:

<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>

Projek lain dalam penyelesaian boleh merujuk pemasangan yang dijana ini, dengan itu mengakses penghitungan dinamik dan menyediakan sokongan IntelliSense.

Automasi acara selepas binaan

Untuk memastikan penjanaan pengiraan automatik, projek "EnumeratedTypes" boleh menambah acara pasca binaan. Acara ini akan dijalankan semasa proses binaan dan menjana fail "MyEnums.dll".

Nota lain

  • Ubah suai susunan binaan untuk memastikan projek "EnumeratedTypes" dibina terlebih dahulu untuk mengelakkan kegagalan binaan jika "MyEnums.dll" dipadamkan.
  • Rujuk artikel MSDN untuk butiran lanjut tentang penjanaan kod dinamik.

Atas ialah kandungan terperinci Bagaimanakah Enum Boleh Dijana Secara Dinamik daripada Jadual Carian Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn