Un moyen d'ajouter des assemblys par défaut pour résoudre les types à partir de Unity / ObjectBuilder?

StackOverflow https://stackoverflow.com/questions/222102

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?

Était-ce utile?

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" />
            ...
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top