Применить атрибут с AttributeTargets = Method ко всем методам в классе

#c# #.net #attributes

#c# #.net #атрибуты

Вопрос:

В C # есть Attribute вызываемый DataSourceAttribute . Его нужно объявлять в каждом Методе снова и снова. Возможно ли объявить его один раз на уровне класса, чтобы мне не нужно было повторяться. Если да, то каким образом?

При тестировании блоков, управляемых данными, источник данных должен быть указан с помощью этого атрибута: [DataSource (...),...] . Существует около 10-15 таких методов, и я не хочу объявлять атрибут для каждого метода. Я бы хотел объявить его один раз, и чтобы все методы наследовали его от использования на уровне класса.

Комментарии:

1. пожалуйста, проясните свой вопрос

2. «Применить атрибут с помощью AttributeTargets = Method ко всем методам в классе» может ли any1 объяснить это??

3. Я не думаю, что это возможно.

Ответ №1:

Взгляните на запоздалую мысль. Это платформа, которая применяет пользовательские фрагменты кода, включая свойства, методы, атрибуты, к вашему решению после компиляции.

Ответ №2:

Возможно, вам удастся создать пользовательский атрибут класса, который применяет атрибут метода ко всем методам в классе.

Вот MSDN для пользовательских атрибутов. http://msdn.microsoft.com/en-us/library/sw480ze8 (v= VS.100).aspx

Комментарии:

1. DataSourceAttribute не может быть унаследован, поэтому я не думаю, что атрибут пользовательского класса возможен..

2. Вы не захотите наследовать от DataSourceAttribute, вы захотите создать новый атрибут класса, который применяет DataSourceAttribute ко всем методам в классе.

3. не могли бы вы, пожалуйста, объяснить на примере?

4. как мне явно добавить атрибут к методу из другого метода .. например, у меня есть метод A и другой метод B .. здесь B управляется данными.. итак, как мне добавить атрибут «Источник данных» к методу B..

5. Я создал атрибут уровня класса, который может создавать атрибут источника данных для метода. Затем у меня есть базовый класс, который тестирует класс и наследует от него, который будет перебирать все методы класса и создавать dynamicmethod для каждого класса. Теперь проблема заключается в необходимости разбора IL, сгенерированного из тела каждого метода. Даже если это возможно (я уверен, что это так, просто потребовалось бы много времени, чтобы начать работать ..), добавление атрибута к динамическому методу мне непонятно. Я думаю, что на этом этапе просто проще добавить источник данных к каждому методу. Извините.