2011-04-27 4 views
0

Quelqu'un peut-il m'aider avec ceci? J'essaie d'utiliser Unity IoC pour l'injection. Voici le code:Utilisation du conteneur Unity IoC

IUnityContainer container = new UnityContainer() 
           .RegisterType<IBaseModel, EmployeeModel>() 
           .RegisterType<IProxyObjectAdapter, EmployeeProxyObjectAdapter>() 
          .RegisterType<IAdventureWorksRepository<IProxyObjectAdapter>,AdventureWorksWCFRepository<IProxyObjectAdapter>>(); 

L'unité se plaint à cette dernière ligne. Voici le message d'erreur:

'AdventureWorksManagement.ServiceAgents.AdventureWorksWCFRepository' ne peut pas être utilisé comme paramètre de type 'TTo' dans le type générique ou méthode « Microsoft.Practices.Unity.UnityContainerExtensions.RegisterType (Microsoft.Practices .Unity.IUnityContainer, params Microsoft.Practices.Unity.InjectionMember []) '. Il n'y a pas de référence de conversion implicite de 'AdventureWorksManagement.ServiceAgents.AdventureWorksWCFRepository' à 'AdventureWorksManagement.ServiceAgents.IAdventureWorksRepository'. C: \ Mon développement \ Mon test sol \ MyTesting sol \ AdventureWorksManagement \ MODELVIEW \ EmployeeViewModel.cs 94 33 AdventureWorksManagement

est ici la définition de classe:

/// <summary> 
    /// Repository for WCF agents 
    /// </summary> 
    public class AdventureWorksWCFRepository<T> : IAdventureWorksRepository<IBaseModel> where T: IProxyObjectAdapter 
    { 
     /// <summary> 
     /// WCF service end 
     /// </summary> 
     private readonly AdvWorksManagementService.EmployeeServiceContractClient servicePoint; 

     /// <summary> 
     /// Adapter used to translate WCF proxy objects to domain objects 
     /// </summary> 
     private T proxyobjectAdapter; 

    ..... 

conseils S'il vous plaît. dormantroot

Répondre

0

L'erreur est correcte. Vous êtes cartographie:

IAdventureWorksRepository <IProxyObjectAdapter> -> AdventureWorksWCFRepository <IProxyObjectAdapter>

Cependant, dans la définition du code, AdventureWorkdsWCFRepository <T> implémente IAdventureWorksRepository < IBaseModel >. Ce n'est pas l'interface que vous essayez de mapper. Je soupçonne que IBaseModel était censé être "T" dans le code.

+0

chris: Par programme, voici ce que je fais: IAdventureWorksRepository serviceAgent = new AdventureWorksWCFRepository (new EmployeeProxyObjectAdapter()); Comment pourrais-je réaliser la même chose avec Unity? – dormantroot

Questions connexes