Не удается создать активатор пользовательских компонентов 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)