#c# #.net #postsharp
#c# #.net #postsharp
Вопрос:
Используя postsharp, я могу фиксировать событие входа и выхода для метода, когда я применяю свой пользовательский атрибут к этому методу. Но есть ли какой-нибудь способ зафиксировать этот вход и выход метода, когда я применяю атрибут на уровне класса вместо уровня метода? Например, когда я применяю атрибут, он должен фиксировать вход и выход любого метода в этом классе. Ниже приведен пример кода для захвата уровня метода
public class CustomAttr: OnMethodBoundaryAspect
{
[NonSerialized]
public override void OnEntry(MethodExecutionArgs args)
{
//do something
}
public override void OnSuccess(MethodExecutionArgs args)
{
//do something
}
}
Комментарии:
Ответ №1:
Да, это называется «многоадресная рассылка атрибутов». Есть несколько способов сделать это, все из которых задокументированы на https://doc.postsharp.net/applying-aspects .
Тот, о котором вы просите, задокументирован по адресу https://doc.postsharp.net/attribute-multicasting#all-members как упоминалось в комментарии @Peter Bons, и это работает именно так, как вы ожидаете — вы применяете атрибут к классу, и все методы класса будут улучшены соответствующим аспектом. Смотрите Документацию о том, как отфильтровать некоторые методы, например, по имени или видимости.