我正在尋找一種方法,可以在我的項目中的許多地方的方法上運行所有方面,而無需手動將屬性標記添加到每個方法或類中。在postsharp中創建全局方面
我的整個解決方案包含大約20個獨立的項目。其中一個我創建了一個叫做myname.space.Attributes持有我的屬性聲明,以及一個名爲GlobalAspects它具有如下:
using PostSharp.Patterns.Diagnostics;
using PostSharp.Extensibility;
using myname.space.Attributes;
// This file contains registration of aspects that are applied to several classes of this project.
[assembly: TraceLoggingAttribute(AttributeTargetTypes = "myname.space.Controllers.*",
AttributeTargetTypeAttributes = MulticastAttributes.AnyVisibility,
AttributeTargetMemberAttributes = MulticastAttributes.AnyVisibility)
]
[assembly: TraceLoggingAttribute(AttributeTargetTypes = "myname.space.Repositories.*",
AttributeTargetTypeAttributes = MulticastAttributes.AnyVisibility,
AttributeTargetMemberAttributes = MulticastAttributes.AnyVisibility)
]
這樣做的目的是我TraceLoggingAttribute添加到所有方法在這些其他2個項目,控制器和存儲庫中進行。
我已經設置了這兩個其他項目來引用Attributes項目,如果我把[TraceLoggingAttribute]標籤放在Controller和Repositories項目中的類和方法上,這個屬性就可以很好地工作。
有沒有一種方法可以讓我的GlobalAspects.cs以我想要的方式工作?請問的問題,如果我沒有解釋的問題不夠好,這裏
對於感興趣的TraceLoggingAttribute被定義爲:
namespace myname.space.Attributes
{
[MulticastAttributeUsage(MulticastTargets.Method, TargetMemberAttributes = MulticastAttributes.Instance)]
[Serializable]
public class TraceLoggingAttribute : OnMethodBoundaryAspect
{
那麼你的意思是在每個項目中本質上都有一個GlobalAspects,cs? – Thewads