私がインターフェースを持っているとしましょう:
namespace MyCompany.Security
{
public interface IMySecurable
{
string GetContext();
}
}
これは、いくつかのクラスによって実装されています。
namespace MyCompany.Repositories
{
using System.Collections.Generic;
using MyCompany.Security;
public class MyRepository : IMySecurable
{
public IEnumerable<string> GetAll()
{
// Repository logic
}
string IMySecurable.GetContext()
{
// Logic here
}
}
}
PostSharp 属性マルチキャストを使用して、アスペクト ( MySecurityAspect
) を名前空間内の各クラスに適用しています。
[assembly: MySecurityAspect(AttributeTargetTypes = "MyCompany.Repositories.*", AttributePriority = 1)]
ただし、明示的なインターフェイス メソッドの実装を除外する方法がわかりません。
string IMySecurable.GetContext()
{
// Logic here
}
このステートメントを使用して、こちらのドキュメントに従ってみました:
[assembly: MySecurityAspect(AttributeTargetMembers = "GetContext", AttributeExclude = true, AttributePriority = 2)]
しかし、これはうまくいかないようです。
明示的なインターフェイスの実装である場合、属性マルチキャストを使用するメソッドを除外するにはどうすればよいですか?