- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我目前正在使用 Autofac-1.4.5.676、autofac contrib 和 caSTLe DynamicProxy2 进行一些试验。目标是创建一个粗粒度的分析器,可以拦截对特定接口(interface)的特定方法的调用。
问题:除了选择性部分之外,我的所有内容都运行良好。我可能是错的,但我认为我需要将我的拦截器与 IProxyGenerationHook 实现结合起来,但我不知道该怎么做。
我的代码看起来像这样:
要拦截&分析的接口(interface)(注意我只关心分析Update()方法)
public interface ISomeSystemToMonitor
{
void Update(); // this is the one I want to profile
void SomeOtherMethodWeDontCareAboutProfiling();
}
现在,当我向容器注册我的系统时,我执行以下操作:
// Register interceptor gubbins
builder.RegisterModule(new FlexibleInterceptionModule());
builder.Register<PerformanceInterceptor>();
// Register systems (just one in this example)
builder.Register<AudioSystem>()
.As<ISomeSystemToMonitor>)
.InterceptedBy(typeof(PerformanceInterceptor));
所有从容器中取出的 ISomeSystemToMonitor 实例都会根据需要进行拦截和分析,除了它会拦截其所有方法,而不仅仅是 Update 方法。
现在,我如何扩展它以排除除 Update() 之外的所有方法?正如我所说,我不明白我是如何通知容器“对于 ProfileInterceptor,使用 IProxyHookGenerator 的这个实现”。
感谢所有帮助,干杯!另外,请注意我现在无法升级到 autofac2.x;我坚持使用 1。
最佳答案
IProxyGenerationHook
实例必须在生成拦截器时传递给 CreateInterfaceProxyWithTarget
调用。参见 this tutorial了解更多详情。
目前似乎没有一种方法可以在不更改 Autofac.DynamicProxy2 集成模块的情况下提供此类 Hook 。可能是对 InterceptedBy
扩展的一个很好的补充。
或者,您可以将过滤构建到 PerformanceInterceptor
中。查看您在调用时传递的 IInvocation
,检查 Method
属性以决定是否分析。但这当然比绕过代理级别的拦截效率低。
关于c# - 使用 autofac 和 dynamicproxy2 选择性拦截方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2662981/
我正在考虑向我正在开发的库添加逻辑,这需要动态代理。我想从在生产环境中使用过这两个库的用户那里得到一些建议。其中一个是否优于另一个,是否有任何缺点使您不得不切换到另一个,等等。基本上告诉我您对图书馆的
我正在使用 caSTLe DynamicProxy,想知道是否有一种方法可以在不引用 CaSTLe DynamicProxy 的情况下检测类型是否是代理? 因此,当我使用 CaSTLe Dynamic
在我们的实际应用程序中,我们定义了一个属性,用于在方法或类中启用日志记录(通常的 AOP 用例)。当我们将此属性应用于 WPF 窗口类时,Ninject 无法创建此类的对象。这是重现该问题的最小示例:
有人知道是否可以控制通过 CaSTLe DynamicProxy 生成的类型的名称?我希望利用持久化由 CaSTLe 生成的程序集的能力,将一些具有某些特定功能的附加类添加到我的项目中,但我希望能够控
我正在使用 CaSTLe DynamicProxy 在运行时创建给定类型的代理 - 包括几个混合。 我正在尝试弄清楚是否可以向代理添加任意属性,例如: class BaseType { strin
我一直在研究使用 DynamicProxy 类,但我对这个概念还很陌生。在我走得太远之前,我想知道这些类与 IntelliSense 和类型安全的配合情况如何? 我只是害怕使用像 Castle Dyn
我们在项目中使用 DynamicProxy。我已经为一些方法创建了一个拦截器。 我知道可以在 CaSTLe.DynamicProxy.IInterceptor 对象中获取方法参数。 拦截器能否在调用
我试图将自定义属性分配给来自动态代理的类 System.Data.Entity.DynamicProxies.Login_A2947F53... 示例类登录 public partial class
我有这样一个场景: 我正在使用拦截器来捕获对主项目引用的程序集内部类(我们称之为功能)的调用。 Assembly Feature 由 NuGet 安装(它不是公开的,而是我们内部的)并且引用了另一个程
下面是来自 Intercept 的代码实现 IInterceptor 的自定义类型上的方法的 Castle Dynamic Proxy图书馆。此片段来自 AOP发布的基于日志记录的概念验证控制台应用程
尝试在 CaSTLe 中使用 TypedFactoryFacility 时遇到问题。 我正在使用 CaSTLe v3.0.0 并且我创建了一个 ViewFactory,使用 injector.AddF
我们基本上有一个如下所示的类,它使用 CaSTLe.DynamicProxy 进行拦截。 using System; using System.Collections.Concurrent; usin
我有 2 个类,一个用于访问数据库,另一个子类使用缓存。我可以更改这两个类的源代码,但是有许多类具有不同的结构,所以我正在寻找一种方法来制作通用解决方案,这将帮助我只拦截我用 Attribute 标记
我可能遗漏了一些非常简单的东西。 我只是想写一个非常简单的 DynamicProxy 用法示例 - 我基本上想拦截调用并显示方法名称和参数值。我有如下代码: public class FirstKin
我正在尝试制作一个动态代理作为现有库的包装器,目标是处理所有操作(属性访问、成员访问、方法调用……)通过动态调度的现有对象。我可能需要它来处理交叉问题,例如更好的错误处理、日志记录或对此对象的访问控制
我正在使用 CreateClassProxyWithTarget 方法装饰现有对象。但是,构造函数和初始化代码被调用了两次。我已经有一个“构建的”实例(目标)。我明白为什么会发生这种情况,但除了使用空
我有一些简单的 DTO 类,例如: [XmlType] class Person : AbstractResource { [XmlElement("name")] public virtua
假设我有一个由第三方创建的 CaSTLe.DynamicProxy 对象。在本例中是 Rhino.Mocks。 var rhinoObj = MockRepository.GenerateMock()
White UI 自动化库广泛使用 Castle Project' s DynamicProxy 2. 据我了解,DynamicProxy 用于“包装”MS UI Automation 对象,并用于检
一个例子最能说明问题: public interface IA { void foo(); void bar(); } public class A : IA { public virtu
我是一名优秀的程序员,十分优秀!