有什么办法可以使用属性内的方法

时间:2019-01-18 11:22:41

标签: c# attributes

我具有属性,并且具有枚举属性。我在方法中使用它。这是我的代码

 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类?

1 个答案:

答案 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;
    }
}