代码之家  ›  专栏  ›  技术社区  ›  Sky Feng

[Castle.DynamicProxy]创建的代理对象没有正确设置原始对象的属性

  •  0
  • Sky Feng  · 技术社区  · 7 年前

    我正在一起使用Castle Windsor和Castle DynamicProxy,以便将AOP与IOC集成,这样我就可以实现日志服务(和审计等),将拦截我项目中的所有服务。

    我试图代理已解决的实例来完成此操作,但运气不佳。因为返回的代理将解析实例的属性设置为null。以下是调试信息供参考(有问题的属性是TimeService)。

    the resolved instance before proxied

    代理前已解析的实例。

    the proxied object

    代理对象

    我是否错过了什么,或者我是否以错误的方式理解了Castle DynamicProxy?我确实在寻找解决方案,但运气不好。

    非常感谢您的回答。提前谢谢。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Jonathon Rossi    7 年前

    您应该在注册期间使用Windsor对AOP的内置支持,而不是覆盖 WindsorContainer.Resolve

    container.Register(
        Component.For<ICalcService>()
            .Interceptors(InterceptorReference.ForType<ReturnDefaultInterceptor>()).Last,
        Component.For<ReturnDefaultInterceptor>()
    );
    

    有关更多信息,请参阅文档: https://github.com/castleproject/Windsor/blob/master/docs/registering-interceptors-and-proxyoptions.md