假设我有一个界面:
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
}
我尝试使用此声明跟踪文档here:
[assembly: MySecurityAspect(AttributeTargetMembers = "GetContext", AttributeExclude = true, AttributePriority = 2)]
然而,这似乎不起作用。
当显式接口实现时,如何使用属性多播排除方法?
答案 0 :(得分:0)
排除设置为true的属性仅影响处理的内容 到排除的发生点,即排除将起作用 只有在排除之前发生的属性。
换句话说,属性的顺序很重要。
如果无效,请直接在http://support.sharpcrafters.com上提问。
BTW:我发现在PSProj文件中指定Postsharp方面比在代码中添加属性更灵活。