0

我使用 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);
4

1 回答 1

3

我自己没有使用过EnumBuilder,但它的DefineLiteral方法返回 aFieldBuilder反过来又暴露SetCustomAttribute了我怀疑你可以用来定义字段的属性。

于 2012-08-29T16:58:01.073 回答