在温莎城堡设施中创建一个类代理

本文关键字:一个 代理 创建 城堡 设施 | 更新日期: 2023-09-27 18:02:24

我试图创建一个工具,将一些拦截器添加到基于类属性的注册类。这是我的设备:

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<MyClass>()方法生成的相同的代理。

我怎样才能做到这一点?

在温莎城堡设施中创建一个类代理

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

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