我希望能够将一个属性应用于接口,以便实现该接口的任何类中的每个方法都将应用该属性。
我认为它看起来像这样:
[Serializable]
[AttributeUsage(AttributeTargets.All, Inherited = true)]
public sealed class TestAttribute : OnMethodBoundaryAspect
{
...
}
然而,当我将它应用于如下界面时,在实现接口的类中调用该方法时,永远不会访问属性中的OnEntry / OnExit代码:
[Test]
public interface ISystemService
{
List<AssemblyInfo> GetAssemblyInfo();
}
如果我在实现类本身中应用该属性,如下所示,它可以正常工作:
[Test]
public class SystemService : ISystemService
{
...
}
我错过了什么/做错了什么?
答案 0 :(得分:8)
你必须使用:
[MulticastAttributeUsage(..., Inheritance=MulticastInheritance.Multicast)]
public sealed class TestAttribute : OnMethodBoundaryAspect
或者:
[Test(AttributeInheritance=MulticastInheritance.Multicast]
public interface ISystemService
答案 1 :(得分:1)
我错过了什么/做错了什么?
接口没有实现,因此无法执行任何'OnEntry / OnExit代码'。
我相信你应该从一个班级继承。
此外,您可以Multicast the attribute,但您需要继承MulticastAttribute。