C# で EnumBuilder を使用して、データベース内のテーブルに基づいて Enum を作成しました。ただし、私のフレームワークが設計されているため、列挙型には通常、データベース内の ID に関連付けられた名前である属性も含まれています。
私が達成しようとしているのは、DB テーブルに関連する列挙型を手動で更新することなく最新の状態に保ち、属性で現在持っている機能を失わないようにすることです (それらはめったに使用されませんが)。
それで、属性も含む列挙型を構築することは可能ですか?
すなわち
public enum Example
{
[StringValue("Some Name 1")]
SomeName1 = 1,
[StringValue("Some Name 2")]
SomeName2 = 2,
}
アップデート
SetCustomAttribute を使用して、列挙型を作成した既存のコードに以下を追加することで、属性を追加できました。
Type myType = typeof(StringValueAttribute);
ConstructorInfo ci = myType.GetConstructor(new Type[] { typeof(string) });
// Other code
FieldBuilder fb = eb.DefineLiteral(name, result.ExampleID);
var cab = new CustomAttributeBuilder(ci, new object[] { result.Name });
fb.SetCustomAttribute(cab);