我正在尝试在抽象类中的抽象方法上实现 OnMethodBoundary 方面,以便从此类继承的所有类型都会自动应用该方面。没有编译错误或警告,但 OnEntry 方法不会触发。注意:如果我将方面应用于非抽象方法,则一切正常
这是方面示例:
[Serializable]
[MulticastAttributeUsage(MulticastTargets.Method, Inheritance = MulticastInheritance.Multicast)]
public sealed class DoSomethingAttribute : OnMethodBoundaryAspect
{
public override void OnEntry(MethodExecutionArgs args)
{
//Do work
}
}
//这是抽象类
public abstract class Job
{
//...
[DoSomething]
public abstract void Run();
}
最佳答案
更新的答案:任何东西在哪里并不重要,只要两个项目都引用了 Postsharp,那么你就可以开始了。
它工作得很好。您使用的是哪个版本的 PostSharp?
class Program
{
static void Main(string[] args)
{
Job1 j = new Job1();
j.Run();
Console.ReadKey();
}
}
[Serializable]
[MulticastAttributeUsage(MulticastTargets.Method, Inheritance = MulticastInheritance.Multicast)]
public sealed class DoSomethingAttribute : OnMethodBoundaryAspect
{
public override void OnEntry(MethodExecutionArgs args)
{
Console.WriteLine("OnEntry");
}
}
public abstract class Job
{
//...
[DoSomething]
public abstract void Run();
}
public class Job1 : Job
{
public override void Run()
{
Console.WriteLine("Run method");
}
}
结果:
OnEntry
Run method
关于c#-4.0 - Postsharp - 将 OnMethodBoundaryAspect 添加到抽象方法 - 方面未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9433934/