У меня проблема с использованием расширения перехвата Ninject с DynamicProxy2. По сути, создаются два экземпляра моего объекта привязки. Моя привязка:
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, я не знаю, есть ли способ обойти это, но буду признателен за любой совет (переписывание конструкторов было продумано и сбито :)).