我在C#中使用EnumBuilder根据数据库中的表创建枚举。但是,在我的框架设计时,我们的枚举还包含一个属性,该属性通常是与数据库中的ID相关联的名称。
我想要完成的是保持与数据库表相关的枚举更新,而不必手动更新它们,并且不会丢失它当前对属性的功能(即使它们很少使用)。
那么,是否可以构建一个包含属性的枚举?
即
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);
答案 0 :(得分:3)
我自己没有使用EnumBuilder
,但其DefineLiteral
方法会返回FieldBuilder
,而SetCustomAttribute
又会显示{{3}},我怀疑您可以使用它来定义属性该领域。