2008-10-21 13 views
0

Je travaille sur mon 1er projet en utilisant le framework MS Unity IoC.Un moyen d'ajouter des assemblys par défaut pour résoudre les types dans Unity/ObjectBuilder?

Si j'ai dans ma configuration d'unité:

<container name="TestBusiness"> 
    <types> 
     <type type="PFServer.DataAccess.TestDataAccess" /> 

Puis-je obtenir l'erreur:

Could not load type 'PFServer.DataAccess.TestDataAccess' from assembly 'Microsoft.Practices.Unity.Configuration, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.

Cependant, si j'ajoute le nom de l'assemblage à la définition de type:

<container name="TestBusiness"> 
    <types> 
     <type type="PFServer.DataAccess.TestDataAccess, PFServer" /> 

Ensuite, cela fonctionne très bien. Est-il possible d'ajouter un ensemble d'assemblys par défaut pour charger des types? La chose étrange dans ce cas est que "PFServer.dll" est l'assembly qui contient toute cette configuration de toute façon. Je trouve bizarre que l'assemblage actuel ne soit pas dans le chemin pour résoudre les objets ... Ou est-ce que je fais juste quelque chose de mal?

Répondre

2

Unity résout les chaînes en objets Type en appelant la méthode statique Type.GetType (string) qui attend un argument AssemblyQualifiedName. L'appel à GetType est effectué dans l'assembly Microsoft.Practices.Unity.Configuration qui ne connaît pas votre assembly PFServer. Il a donc besoin du nom de l'assembly dans la chaîne. Je pense que les alias de type pourraient vous aider. Voici un exemple.

<unity> 
    <typeAliases> 
     <typeAlias alias="TestDataAccess" type="PFServer.DataAccess.TestDataAccess, PFServer" /> 
     ... 
    </typeAliases> 

    <containers> 
     <container name="TestBusiness"> 
     <types> 
      <type type="TestDataAccess" /> 
      ... 
+0

Merci pour vos commentaires. Je regardais la documentation pour Unity sur MSDN, et dans leurs exemples il y a des endroits où ils n'ajoutent pas spécifiquement le nom de l'assembly, c'est pourquoi j'étais confus que je devais le faire. Ce n'est pas la première erreur que j'ai vue dans la documentation et les exemples de l'unité. – CodingWithSpike