Un moyen d'ajouter des assemblys par défaut pour résoudre les types à partir de Unity / ObjectBuilder?
-
03-07-2019 - |
Question
Je travaille sur mon 1er projet en utilisant le framework MS Unity IoC.
Si j'ai cela dans ma configuration d'unité:
<container name="TestBusiness">
<types>
<type type="PFServer.DataAccess.TestDataAccess" />
Ensuite, j'obtiens l'erreur:
Impossible de charger le type 'PFServer.DataAccess.TestDataAccess' de l'assemblée 'Microsoft.Practices.Unity.Configuration, Version = 1.1.0.0, Culture = neutre, PublicKeyToken = 31bf3856ad364e35 '.
Cependant, si j'ajoute le nom de l'assembly à la définition de type:
<container name="TestBusiness">
<types>
<type type="PFServer.DataAccess.TestDataAccess, PFServer" />
Ensuite, cela fonctionne bien. Est-il possible d'ajouter un ensemble d'ensembles 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 étrange que l’assemblage actuel ne soit pas sur le chemin pour résoudre les objets ... Ou est-ce que je fais quelque chose de mal?
La solution
Unity résout les chaînes en objets Type en appelant la méthode statique Type.GetType (chaîne) qui attend un argument qui est un AssemblyQualifiedName . L'appel à GetType est effectué dans l'assembly Microsoft.Practices.Unity.Configuration qui ne connaît pas votre assembly PFServer et 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" />
...