Не удается создать активатор пользовательских компонентов Windsor - PullRequest
3 голосов
/ 12 июня 2010

Я получаю исключение, вызывающее 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."}

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

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

1 Ответ

5 голосов
/ 12 июня 2010

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

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

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)
...