2010-06-11 11 views
3

Je reçois une exception appelant Resolve:instanciation Activator Windsor composant personnalisé

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

Il y a certainement un constructeur de parameterless publique là-bas (et je l'ai vérifié cette réflexion à l'aide à l'exécution) ... donc Je pense que le problème pourrait avoir à voir avec le fait que c'est générique? J'ai essayé de faire en sorte que l'objet de modèle de composant et en définissant RequiresGenericArguments soit vrai, mais cela ne m'a pas obtenu n'importe où.

Toute aide serait grandement appréciée! Merci.

Répondre

5

Windsor n'utilise pas le constructeur par défaut pour instancier des activateurs.

La nouvelle version lance un message d'exception plus utile:

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 

Vous avez donc besoin d'un constructeur comme celui-ci

public YourActivator(ComponentModel model, IKernel kernel, 
            ComponentInstanceDelegate onCreation, 
            ComponentInstanceDelegate onDestruction) 
+0

Vous da l'homme, merci! – Jeff