【问题标题】:PostSharp - excluding a method using AttributeExclude doesn't workPostSharp - 使用 AttributeExclude 排除方法不起作用
【发布时间】:2011-02-02 06:19:40
【问题描述】:

我们有一个项目,我们使用 PostSharp 来启用日志记录。效果很好。但是,有一些方法在非常紧凑的循环中运行,其中日志记录的开销确实增加了相当大的数量。我正在尝试找出将它们从日志记录代码中排除的最佳方法。

根据我的阅读,这种方法应该有效

AssemblyInfo.cs

// turn on logging for all methods in all classes
[assembly: Log(LogType.Debug)]

Code.cs

// exclude this specific method
[Log(AttributeExclude=true)]
private void SomeMethod(...)

但是,当我这样做并使用分析器运行它时,我仍然看到正在 SomeMethod() 上执行的日志代码。根据 SO 和 PostSharp 论坛上的帖子,我尝试了许多不同的迭代,我总是得到相同的结果。

感觉这应该很简单,我只是错过了一些明显的东西。

【问题讨论】:

  • 您建议的解决方案应该可行。您是否使用反射器查看了 SomeMethod 以查看代码中的内容?

标签: aop postsharp


【解决方案1】:

我发现我的 SomeMethod() 例程中有一个 LINQ 查询,编译器正在变成一个单独的方法。这个编译器生成的方法也被 PostSharp 用 Log 属性修饰。在分析器中查看这个并不清楚发生了什么,但在使用 Resharper 挖掘生成的代码后,我想通了。

【讨论】:

  • 你用过 ReSharper 还是 Reflector?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多