各メソッドまたはクラスに属性タグを手動で追加することなく、プロジェクトの多くの場所でメソッドを実行するすべての側面を探しています。
私のソリューション全体には、約 20 の個別のプロジェクトがあります。私が作成した 1 つは、私の属性宣言を保持する 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 つのプロジェクト、コントローラーとリポジトリ内に保持されているすべてのメソッドに追加することでした。
これら 2 つの他のプロジェクトを Attributes プロジェクトを参照するように設定しました。[TraceLoggingAttribute] タグを Controller および Repositories プロジェクト内のクラスとメソッドに配置すると、属性は完全に正常に機能します。
探している方法で GlobalAspects.cs を設定する方法はありますか? ここで問題を十分に説明していない場合は、質問してください
参考までに、TraceLoggingAttribute は次のように定義されています。
namespace myname.space.Attributes
{
[MulticastAttributeUsage(MulticastTargets.Method, TargetMemberAttributes = MulticastAttributes.Instance)]
[Serializable]
public class TraceLoggingAttribute : OnMethodBoundaryAspect
{