在温莎城堡设施内创建类代理

发布于 2024-11-24 22:49:45 字数 675 浏览 2 评论 0原文

我正在尝试创建一个工具,它将根据类属性向注册的类添加一些拦截器。 这是我的设施:

public class MyFacility : AbstractFacility
{
     protected override void Init()
    {
        this.Kernel.ComponentRegistered += (s, h) =>
        {
            if (h.ComponentModel.Implementation.GetCustomAttributes(typeof(MyAttribute), false).Length > 0)
            {
                h.ComponentModel.Interceptors.Add(InterceptorReference.ForType<MyInterceptor>());
            }
        }
    }
}

但是这样,当我在类方法中使用 this 关键字时,它引用的是目标类而不是代理类,这使得我使用的某些框架无法正常工作。

我需要使用一种工具创建与使用 ProxyGenerator.CreateClassProxy() 方法生成的相同代理。

我怎样才能实现这个目标?

I'm trying to create a facility that will add some interceptor to the registered class based on the class attribute.
This is my facility:

public class MyFacility : AbstractFacility
{
     protected override void Init()
    {
        this.Kernel.ComponentRegistered += (s, h) =>
        {
            if (h.ComponentModel.Implementation.GetCustomAttributes(typeof(MyAttribute), false).Length > 0)
            {
                h.ComponentModel.Interceptors.Add(InterceptorReference.ForType<MyInterceptor>());
            }
        }
    }
}

but this way, when I use the this keyword in a class method it refers to the target class not the proxy class and this makes some framework that I use don't work properly.

I need to create with a facility the same proxy that is generated with the ProxyGenerator.CreateClassProxy<MyClass>() method.

How can I achieve this?

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

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

发布评论

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

评论(1

我的鱼塘能养鲲 2024-12-01 22:49:45

将类公开为组件上的服务。

container.Register(
   Component.For<SomeClass,ISomeInterface>().Lifestyle.Whatever.Interceptors<SomeInterceptor>()
);

Expose the class as a service on your component.

container.Register(
   Component.For<SomeClass,ISomeInterface>().Lifestyle.Whatever.Interceptors<SomeInterceptor>()
);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文