我正在运行一个.NET 4.0 Web应用程序(而不是网站)和PostSharp 1.5。我无法让OnEntry覆盖方法使用OnMethodBoundaryAspect基类来执行。这里是一些相关的代码:PostSharp OnMethodBoundaryAspect OnEntry不执行
public sealed class MonitorAttribute : OnMethodBoundaryAspect {
public string[] SomeValue { get; protected set; }
public MonitorAttribute (params string[] someValue){
SomeValue = someValue;
}
public override void OnEntry(MethodExecutionEventArgs eventArgs){
// do Something here
base.OnEntry(eventArgs);
}
}
public sealed class MyUsageClass : IMyUsageClass {
[Monitor(new string[]{ 'Test' })
public void SomeMethod {
// Do something else in here
}
}
我是否错过了什么?它从不碰到OnEntry方法。我也尝试用新的2.0版本替换PostSharp.dll和PostSharp.Laos.dll依赖项。如果它有任何区别MyUsageClass
由StructureMap实例化。
使用ILSpy(或反射),并检查你的方法编译时间后。你的目标方法应该包含一个try/catch方法,或者至少在方法体顶部调用方面的OnEntry方法。 – 2011-06-16 20:45:05
非常酷。我正在下载ILSpy ....我会尽快回复。谢谢! – a432511 2011-06-16 20:50:44
好的。通过ILSpy查看方法,我没有看到方法体顶部的OnEntry调用。 – a432511 2011-06-16 20:55:19