假设我有一个界面:
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)]
但是,这似乎不起作用。
当它们是显式接口实现时,如何使用属性多播排除方法?