我使用 C# 中的 EnumBuilder 根据我的数据库中的表创建枚举。然而,正如我的框架所设计的那样,我们拥有的枚举还包含一个属性,该属性通常是与数据库中的 ID 关联的名称。
我想要完成的是使与数据库表相关的枚举保持最新,而无需手动更新它们,并且不会丢失它当前具有的属性功能(即使它们很少使用)。
那么,是否可以构建一个也包含属性的枚举?
IE
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);