Microsoft Unity:使用 BuildUp 而不是 Resolve 时拦截不起作用

发布于 2024-09-16 12:34:56 字数 325 浏览 8 评论 0原文

我正在使用 Microsoft Unity 2.0,拦截扩展未按预期工作。

考虑这两行代码:

MyUnityContainer.Configure<Interception>().SetDefaultInterceptorFor<MyType>(new VirtualMethodInterceptor());
var someObject = MyUnityContainer.BuildUp<MyType>(anObject);

这两行代码不会为您提供您期望的某个对象的动态代理!在这种情况下如何才能实现拦截呢?

I am using Microsoft Unity 2.0 and the interception extension is not working as expected.

Consider these two lines of code:

MyUnityContainer.Configure<Interception>().SetDefaultInterceptorFor<MyType>(new VirtualMethodInterceptor());
var someObject = MyUnityContainer.BuildUp<MyType>(anObject);

These two lines don't get you the dynamic proxy you'd expect for someObject! How can one make interception work for such a scenario?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情徒 2024-09-23 12:34:56

此页面说明您无法使用 BuildUp 来使用虚拟拦截 因为它只能在创建对象时应用(因为目标对象的子类是动态生成的):

拦截仅发生在虚拟上
方法。您必须设置拦截
在对象创建时并且不能
拦截现有对象。

This page explains that you cannot use virtual interception using BuildUp since it can only be applied when the object is created (since a subclass of the target object is dynamically generated):

Interception only happens on virtual
methods. You must set up interception
at object creation time and cannot
intercept an existing object.

似狗非友 2024-09-23 12:34:56

VirtualMethodInterceptor 仅适用于新对象。您可以使用Interface 或TransparentProxy 拦截器来拦截现有实例(因为它们使用显式代理对象)。

我可以看到可能添加一个 VirtualMethodProxyInterceptor,但我预计它只会造成更多的混乱而不是帮助。

VirtualMethodInterceptor works only on new objects. You could use the Interface or TransparentProxy interceptors instead to intercept an existing instance (since those use explicit proxy objects).

I could see possibly adding a VirtualMethodProxyInterceptor, but I expect it'd just cause more confusion than help.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文