Не могу создать экземпляр Windsor Custom Activator компонента
-
26-09-2019 - |
Вопрос
Я получаю решение об вызове исключения:
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."}
Там определенно есть общедоступный конструктор без параметров (и я проверил это, используя отражение во время выполнения) ... поэтому я понял, что проблема, возможно, связана с тем, что это общий? Я пытался получить объект модели компонентов и настройки TransGenericarGuments для True, но это нигде не получилось меня.
Любая помощь приветствуется! Спасибо.
Решение
Виндзор не использует конструктор по умолчанию для экземпляров активаторов.
Новая версия бросает более полезное сообщение исключения:
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)
Не связан с StackOverflow