在我的应用程序中,我以前使用常规的C#属性来“注释”一种方法。例如: -一种方法的多个方面
[Foo(SomeKey="A", SomeValue="3")]
[Foo(SomeKey="B", SomeValue="4")]
public void TheMethod()
{
SpecialAttributeLogicHere();
}
什么SpecialAttributeLogicHere()一样,是要反思一下所有注释这种特殊的方法美孚的属性。然后它会自行为所有键和值创建自己的字典。
我现在正在尝试移动到PostSharp,因为在OnEntry中,SpecialAttributeLogic可以放入一个方面(并且从方法体中移除更清洁!)。 Foo将被一个扩展OnMethodBoundaryAspect的方面所取代。
我仍然想使用它的方式如下:
[Foo(SomeKey="A", SomeValue="3")]
[Foo(SomeKey="B", SomeValue="4")]
但是,这意味着,如果美孚拥有OnEntry,认为“SpecialAttributeLogic”将被执行两次。我基本上需要将每个Foo()中的所有键和值“收集”到一个字典中,然后我应用一些逻辑。
如何使用PostSharp完成此操作(或最佳实践)?谢谢!
在我的回答下面添加了工作示例。 –