準動的メソッドを使用して、t4 テンプレートを使用して SQL ルックアップ テーブルから列挙型を作成しています。テンプレートは、ルックアップ パターンに準拠するすべてのテーブルの列挙型を生成します。これらの列挙型のいくつかはコードで使用されていませんが、いずれかが使用される可能性があります。
これはうまくいきましたが、ユーザーが新しい値を追加したり、説明を編集したりできるように、ルックアップ管理インターフェイスを作成するよう求められました。
彼らは現在コードで列挙値として使用されている項目を変更したくないので、列挙値が使用されているかどうかを調べるためにアセンブリにクエリを実行する簡単な (またはそれほど単純ではない) 方法はありますか?
この作成された例に似たコードがたくさんあります。
public Role GetAdminRole
{
using (myContext ctx = new myContext()
{
return ctx.Roles.Where(i=> i.RoleId == (int)RoleEnum.Admin).SingleOrDefault();;
}
}
Type.FindMembers() を使用して、メソッドの内部を照会できるフィルターを作成する方法はありますか?
System.Reflection.Emit
EnumBuilder クラスに基づいて有望に思われる名前空間を見てきましたが、ビルダーを既存のアセンブリに接続する方法がわかりませんでした。名前System.Diagnostics.CodeAnalysis
空間は興味深いように聞こえますが、含まれている属性は 2 つだけです (警告を抑制し、コードをカバレッジから除外するため)。
編集:ILSpyを調べているときに、コンパイル時に上記の方法で使用すると、メソッドの列挙値が整数値に変換されることを知っていたが、まとめていないことがわかりました。