Pergunta

Estou recebendo uma resolução de chamadas de exceção:

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."}

Definitivamente, existe um construtor público sem parâmetros lá (e eu verifiquei isso usando a reflexão em tempo de execução) ... então acho que o problema pode ter a ver com o fato de ser genérico? Eu tentei obter o objeto e a configuração do modelo de componente requer o NEGRANCIMENTO DO TRUE, mas isso não me levou a lugar algum.

Qualquer ajuda seria muito apreciada! Obrigado.

Foi útil?

Solução

Windsor não está usando o construtor padrão para instanciar ativadores.

A nova versão lança uma mensagem de exceção mais útil:

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

Então você precisa de um construtor como este

public YourActivator(ComponentModel model, IKernel kernel,
                                    ComponentInstanceDelegate onCreation,
                                    ComponentInstanceDelegate onDestruction)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top