ホームページ > バックエンド開発 > C++ > データベース ルックアップ テーブルから C# 列挙型を自動的に生成するにはどうすればよいですか?

データベース ルックアップ テーブルから C# 列挙型を自動的に生成するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-12 08:35:42
オリジナル
372 人が閲覧しました

How Can I Automatically Generate C# Enums from Database Lookup Tables?

データベース ルックアップ テーブルから 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート