1

场景是我们使用 Unity 编写了一个调试器拦截器来轻松包装一个对象,以编写一个方法完成所需的时间间隔。可悲的是,它还编写了所有公共属性的 get 和 set 调用。因此,我们只需在属性上添加一个属性即可将其排除在跟踪之外。就像是:

Property Example { [ExcludeFromTracing]get; [ExcludeFromTracing]set; }

自从:

ExcludeFromTracing
Property Example { get; set; }

不起作用,因为 get 和 set 被编译为它们自己的方法,这些方法将在运行时被拦截。

所以这在 C# 中适用于我们......现在挑战来了,我们也有遗留的 vb.net 应用程序,如果我们有性能问题并且只是想添加这个拦截器来查明我们应用程序中的瓶颈。

可悲的是,我找不到 vb.net 等效于将属性添加到接口中的属性获取和设置方法的方法?或任何其他排除使用 unity.interception 拦截属性调用的方式

4

1 回答 1

0

您可以检查该IsSpecialName标志是否设置为过滤掉编译器生成的 getter 和 setter(以及事件等)。

我猜你正在使用IInterceptionBehavior. 在Invoke方法中,检查input.MethodBase.IsSpecialName.

于 2018-10-09T14:22:40.273 回答