2009-11-15 5 views
2

J'ai une unité d'installation dans mon projet et il fonctionne pour les objets sur lesquels aucune injection de constructeur n'est implémentée. Le problème est maintenant que j'ai un objet qui nécessite un objet personnalisé en tant qu'argument de constructeur. Je l'ai mis en place la configuration ci-dessous, et cette erreur me disant que « TypeConverter ne peut pas convertir System.String »Constructeurs Unity

<unity>  
    <typeAliases>  
    <typeAlias alias="TransactionRepositoryInterface" type="Ib.TransactionViewer.DataAccess.ITransactionRepository, Ib.TransactionViewer.DataAccess" />  
    <typeAlias alias="TransactionRepositoryToUse" type="Ib.TransactionViewer.DataAccess.TransactionRepository, Ib.TransactionViewer.DataAccess" />  
    </typeAliases> 
    <containers>  
    <container>  
     <types>  
     <type type="TransactionRepositoryInterface" mapTo="TransactionRepositoryToUse">  
      <lifetime type="singleton" />  
      <typeConfig extensionType="Microsoft.Practices.Unity.Configuration.TypeInjectionElement, Microsoft.Practices.Unity.Configuration, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">  
      <constructor>  
       <param name="TransactionProcessor" parameterType="Ib.TransactionViewer.DataAccess.TransactionProcessor, Ib.TransactionViewer.DataAccess">  
       <value value="Ib.TransactionViewer.DataAccess.TransactionProcessor" type="Ib.TransactionViewer.DataAccess.TransactionProcessor, Ib.TransactionViewer.DataAccess" />  
       </param> 
      </constructor>  
      </typeConfig>  
     </type>  
     </types> 
    </container>  
    </containers>  
</unity> 
+1

Est en utilisant la configuration XML une exigence? Je préfère de loin la configuration en code Fluent; Je pense que vous trouverez plus facile à lire et à déboguer. – TrueWill

Répondre

2

Je ne sais pas, mais ça me semble que l'unité tente d'utiliser la valeur

Ib.TransactionViewer.DataAccess.TransactionProcessor

en tant que chaîne.

Peut-être que vous devriez écrire quelque chose comme:

<unity>  
    <typeAliases>  
    <typeAlias alias="TransactionRepositoryInterface" type="Ib.TransactionViewer.DataAccess.ITransactionRepository, Ib.TransactionViewer.DataAccess" />  
    <typeAlias alias="TransactionRepositoryToUse" type="Ib.TransactionViewer.DataAccess.TransactionRepository, Ib.TransactionViewer.DataAccess" />  
    </typeAliases> 
    <containers>  
    <container>  
     <types>  
     <type type="TransactionRepositoryInterface" mapTo="TransactionRepositoryToUse">  
      <lifetime type="singleton" />  
      <typeConfig extensionType="Microsoft.Practices.Unity.Configuration.TypeInjectionElement, Microsoft.Practices.Unity.Configuration, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">  
      <constructor>  
       <param name="TransactionProcessor" parameterType="Ib.TransactionViewer.DataAccess.TransactionProcessor, Ib.TransactionViewer.DataAccess">  
       <dependency />  
       </param> 
      </constructor>  
      </typeConfig>  
     </type>  
     </types> 
    </container>  
    </containers>  
</unity>