2010-04-14 2 views
0

J'ai un problème lorsque je demande ILogger par défaut à partir du conteneur Unity. Je ce paramètre défini dans le code (son VB.net)Problème de définition d'unité défini dans le code

Dim container As IUnityContainer 
... 
container.RegisterType(Of ILogger, NullLogger)() 
container.RegisterType(Of ILogger, EntLibLogger)("EL") 

Quand je reçois ILogger du contenant j'avoir le nom différent, comme:

Ioc.Resolve(Of ILogger)("MyLogger") 

Cependant cela soulève erreur que la cartographie est pas défini pour 'MyLogger'. Puis-je forcer le conteneur à retourner un type qui a été enregistré sans nom? En fait, quand j'ai utilisé le paramètre de web.config cela a fonctionné.

Tout conseil est le bienvenu. Merci. Cheers, X.

Répondre

0

L'instance enregistrée est enregistrée sans nom, elle n'est donc pas destinée à être une instance par défaut/de secours si aucune entrée n'est trouvée.

Mais vous pouvez écrire une extension pour que le conteneur se connecte au processus de résolution. Ou vous pouvez simplement écrire une méthode d'extension pour l'interface IUnityContainer qui gère ce comportement de secours.

+0

Merci pour votre réponse. Je pensais que Unity gérerait cela d'une manière ou d'une autre. par exemple. comme StructureMap. –

Questions connexes