在温莎城堡设施内创建类代理
我正在尝试创建一个工具,它将根据类属性向注册的类添加一些拦截器。 这是我的设施:
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
将类公开为组件上的服务。
Expose the class as a service on your component.