Un modo per aggiungere alcuni assembly predefiniti per risolvere i tipi da in Unity / ObjectBuilder?

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

Domanda

Sto lavorando al mio primo progetto utilizzando MS Unity IoC framework.

Se ho questo nella mia configurazione di unità:

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

Quindi ottengo l'errore:

  

Impossibile caricare il tipo   'PFServer.DataAccess.TestDataAccess'   dal montaggio   'Microsoft.Practices.Unity.Configuration,   Versione = 1.1.0.0, Cultura = neutro,   PublicKeyToken = 31bf3856ad364e35' .

Tuttavia, se aggiungo il nome dell'assembly alla definizione del tipo:

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

Quindi funziona benissimo. Esiste un modo per aggiungere un set predefinito di assiemi da cui caricare i tipi? La cosa strana in questo caso è che "PFServer.dll" è l'assembly che contiene comunque tutta questa configurazione. Trovo strano che l'assembly corrente non sia nel percorso per risolvere gli oggetti ... O sto solo facendo qualcosa di sbagliato?

È stato utile?

Soluzione

Unity risolve le stringhe in oggetti Type chiamando il metodo statico Type.GetType (stringa) che prevede un argomento AssemblyQualifiedName . La chiamata a GetType viene effettuata nell'assembly Microsoft.Practices.Unity.Configuration che non è a conoscenza dell'assembly PFServer, quindi necessita del nome dell'assembly nella stringa.

Penso che gli alias di tipo potrebbero aiutarti. Ecco un esempio

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

    <containers>
      <container name="TestBusiness">
        <types>
            <type type="TestDataAccess" />
            ...
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top