我具有属性,并且具有枚举属性。我在方法中使用它。这是我的代码
public class MyAttibute : Attribute
{
public MyEnum MyEnum { get; set; }
}
使用属性
class MyEnums
{
public const MyEnum MainEnum = (MyEnum)1;
public const MyEnum SimpleEnum = (MyEnum)2;
}
[MyAttibute(MyEnum = MyEnums.MainEnum)]
void MyMethod()
{
}
我还有另一个类,其中包含对MyEnums常量进行强制转换的数字
class MyNumbers
{
public const int MainEnum = 1;
public const int SimpleEnum = 2;
}
因此,我创建了方法GetEnumFromNumber:
MyEnum GetEnumFromNumber(int number)
{
return (MyEnum)number;
}
但是我不能在属性中使用它。是否可以使用MyNumbers类代替创建MyEnums类?
答案 0 :(得分:1)
您可以将MyEnum
个成员直接传递给您的服装:
[MyAttibute(MyEnum = MyEnum.Main)]
您可以在属性类中包含任何逻辑:
[AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)]
public class MyAttribute : Attribute
{
private readonly MyEnum myEnum;
public MyAttribute(int number)
{
this.myEnum = GetEnumFromNumber(number);
// OR: this.myEnum = (MyEnum)number;
}
}