データベース ルックアップ テーブルから C# 列挙を自動的に生成します
背景:
エンタープライズ アプリケーションでは、メンテナンスを容易にするために、よく使用されるルックアップ値がデータベース テーブルに保存されることがよくあります。 C# コードでこのようなデータを操作する場合、タイプ セーフティとコードの明確さのために、テーブル内の値を反映する列挙を定義することができます。ただし、ルックアップ テーブルに変更が加えられた場合、この列挙を手動で維持するのは面倒になる可能性があります。
動的列挙生成:
この課題に対処するには、データベース ルックアップ テーブルの値に基づいて列挙を自動的に作成および更新する必要があります。これはコード生成によって実現できますが、完全に自動化されたソリューションが推奨されます。
コード生成方法:
効率的なアプローチは、列挙を生成するための別のプロジェクトを作成することです。このプロジェクトには、データベースから値を抽出し、列挙定義を構築し、それをアセンブリにコンパイルするコードが含まれます。
サンプルコード:
<code class="language-csharp">// 基于数据库值动态定义枚举 AssemblyName assemblyName = new AssemblyName("MyEnums"); AssemblyBuilder assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.RunAndSave); ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule(assemblyName.Name, assemblyName.Name + ".dll"); EnumBuilder myEnum = moduleBuilder.DefineEnum("MyEnum", TypeAttributes.Public, typeof(int)); // 从数据库检索数据 MyDataAdapter dataAdapter = new MyDataAdapter(); MyDataSet.MyDataTable myData = dataAdapter.GetMyData(); // 基于数据库行定义枚举文字 foreach (MyDataSet.MyDataRow row in myData.Rows) { myEnum.DefineLiteral(row.Name, row.Key); } // 创建枚举类型 myEnum.CreateType(); // 保存程序集 assemblyBuilder.Save(assemblyName.Name + ".dll");</code>
コード生成の利点:
列挙を動的に生成することで、データベース ルックアップ テーブルとの同期を確保できます。これにより、手動メンテナンスの必要性がなくなり、コードの重複が減り、柔軟性が向上します。
他のプロジェクトとの統合:
enum アセンブリが生成されると、他のプロジェクトから参照できるため、開発者は動的に定義された enum 値を操作し、IntelliSense サポートを利用できるようになります。
自動的に生成されたビルド後イベントの場合:
このプロセスを完全に自動化するには、ビルド後のイベントを列挙型ビルド プロジェクトに追加して、ビルドのたびにビルド プロセスをトリガーし、列挙型を常に最新の状態に保つことができます。
以上がデータベース ルックアップ テーブルから C# 列挙型を自動的に生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。