Есть ли способ использовать метод внутри атрибута - PullRequest
0 голосов
/ 18 января 2019

У меня есть атрибут, и у него есть свойство enum. Я использую это в методе. Вот мой код

 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 голосов
/ 18 января 2019

Вы можете передать 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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...