[C#] Создаем свои атрибуты для классов

EFI_COMPROMISED_DATA
лучший в мире
Статус
Оффлайн
Регистрация
26 Янв 2018
Сообщения
920
Реакции[?]
1,632
Поинты[?]
85K
Кароче мне в мою голову пришла идея невъебенная чтобы залупить атрибуты которые будут наследовать абстрактную модель в энжин бота для всяких верификаций, атрибуты это есче такой прикол над классами/филдами пишется
1579727313843.png

Собсна сама модель примерно такая получается
C#:
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
    abstract class ModuleAttribute : Attribute {

        public abstract bool IsContextValid(Message msg, string args, TelegramBotClient bot, bool sudo, Bot botBase);

        public abstract string GetErrorMessage(Language lang);

    }
Щяс поясню

допустим у меня есть модуль в боте(класс который наследует абст. класс Module), которому для работы нужны права суперпользователя(всякие системные кмд), я создаю атрибут который будет проверять на то, есть ли у человека sudo, которое по дефу и так передается во все классы, но так в самом теле исполнения кода команды я не буду срать проверками на арги и прочую дичь

1579727499471.png

казалось бы справедливо уже, но я столкнулся с тем, что конструктор у атрибутов не вызывается как написано в доках(спс майки), ну и пришлось порефлексировать немного
1579727569245.png (перед этим в конструкторе я заполнил лист из object этими самыми атрибутами)

теперь достаточно просто вызывать этот верифай перед исполнением тела модуля и дело в шляпе(ну и ловить эксепшн офк)
по скольку это андокументед все и делалось методом тыка у мя на это ушло ~чяс работы

опять же это все примеры в реализации, просто хотелос помочь тем, кто ресерчить это будет
код не супер квалити потому что писался в 4 часа утра когда у меня голова кипела от рефлексии :roflanEbalo:
 
Сверху Снизу