我正在尝试在抽象类中的抽象方法上实现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();
}
答案 0 :(得分:2)
更新回答:无论何处都没关系,只要两个项目都引用了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