我在使用带有 DynamicProxy2 的 Ninject 拦截扩展时遇到问题。本质上,我的绑定对象的两个实例被创建。我的绑定是:
this.Bind<TestInterface1>().ToSelf().Intercept().With(new ActionInterceptor(i => Console.WriteLine("In interceptor")));
第一个实例似乎是作为正常解决程序的一部分创建的。第二个实例是作为代理创建的一部分创建的,特别是在DynamicProxy3ProxyFactory.cs中。
reference.Instance = this.generator.CreateClassProxy(targetType, ProxyOptions, parameters, wrapper);
第二个实例似乎取代了 Ninject 上下文中的第一个实例(尽管我对此不是 100% 确定),所以人们会相信一切都很好。第一个实例只会持续一纳秒。不幸的是,我的构造函数不是那么“干净”,并且运行它两次会引起一些混乱。由于第二个实例的构建是在 Castle 中完成的,我不知道是否有办法解决这个问题,但任何建议都将不胜感激(重写构造函数已被考虑并被击落:))。