Не удается создать активатор пользовательских компонентов Windsor

Я получаю исключение, вызывающее Resolve:

KernelException: Could not instantiate custom activator
Inner Exception:
{"Constructor on type 'MyProj.MyAdapter`1[[MyProj.MyBusinessObject, MyAsm, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' not found."}

Там определенно есть открытый конструктор без параметров (и я проверил это, используя отражение во время выполнения)... так что я думаю, что проблема может быть связана с тем фактом, что он универсален? Я попытался получить объект модели компонента и установить для RequGenericArguments значение true, но это никуда меня не привело.

Любая помощь приветствуется! Благодарю.

1 ответ

Решение

Виндзор не использует конструктор по умолчанию для создания экземпляров активаторов.

Новая версия выдает более полезное сообщение об исключении:

Castle.MicroKernel.KernelException : Could not instantiate custom activator
  ----> System.ArgumentException : Type Castle.Windsor.Tests.ActivatorWithoutCorrectConstructor does not have a public constructor matching arguments of the following types:
Castle.Core.ComponentModel
Castle.MicroKernel.DefaultKernel
Castle.MicroKernel.ComponentInstanceDelegate
Castle.MicroKernel.ComponentInstanceDelegate

Итак, вам нужен конструктор, как это

public YourActivator(ComponentModel model, IKernel kernel,
                                    ComponentInstanceDelegate onCreation,
                                    ComponentInstanceDelegate onDestruction)
Другие вопросы по тегам