В моем приложении я ранее использовал обычные атрибуты C # для «аннотирования» метода.Например:
[Foo(SomeKey="A", SomeValue="3")]
[Foo(SomeKey="B", SomeValue="4")]
public void TheMethod()
{
SpecialAttributeLogicHere();
}
То, что сделал SpecialAttributeLogicHere (), заключалось в рефлексивном взгляде на все атрибуты Foo, которые аннотировали этот конкретный метод.Затем он (самостоятельно) создаст свой собственный словарь для всех ключей и значений.
Я сейчас пытаюсь перейти к PostSharp, потому что SpecialAttributeLogic может быть помещен в аспект (и удален изтело метода, которое намного чище!), в пределах OnEntry.Foo будет заменен аспектом, который расширяет OnMethodBoundaryAspect.
Я все же хотел бы использовать его следующим образом:
[Foo(SomeKey="A", SomeValue="3")]
[Foo(SomeKey="B", SomeValue="4")]
Но если у Foo есть OnEntry, это означает, что «SpecialAttributeLogic»будет выполнен дважды.Мне в основном нужно «собрать» все ключи и значения из каждого Foo () в словарь, к которому я затем применил некоторую логику.
Как это сделать (или лучшие практики) с PostSharp?Спасибо!