gpt4 book ai didi

c# - PostSharp OnMethodBoundaryAspect OnEntry 未执行

转载 作者:太空狗 更新时间:2023-10-29 20:37:36 25 4
gpt4 key购买 nike

我正在运行 .NET 4.0 Web 应用程序(不是网站)和 PostSharp 1.5。我无法使用 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 实例化。

最佳答案

是的,每个开发人员都需要安装 PostSharp。如果您只是使用入门版,那么一切都是免费的。

将此作为答案发布以向您展示代码。我的测试代码

class Program
{
[Monitor]
static void Main(string[] args)
{

}
}

[Serializable]
public class MonitorAttribute : OnMethodBoundaryAspect
{
public override void OnEntry(MethodExecutionArgs args)
{
Console.WriteLine("OnEntry");
}
}

编译后的代码

internal class Program
{
[CompilerGenerated, DebuggerNonUserCode]
internal sealed class <>z__Aspects
{
internal static MethodBase m1 = MethodBase.GetMethodFromHandle(ldtoken(Main()));
internal static readonly MonitorAttribute a0 = (MonitorAttribute)<>z__AspectsImplementationDetails.aspects1[0];
}
private static void Main(string[] args)
{
Program.<>z__Aspects.a0.OnEntry(null);
}
}

关于c# - PostSharp OnMethodBoundaryAspect OnEntry 未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6378083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com