2010-06-22 7 views
4

Est-ce que quelqu'un sait comment contourner le fait? Unity Container InjectionConstructor n'a aucune surcharge pour Func < chaîne >?Unity Container InjectionConstructor - Impossible de convertir l'expression lambda en type 'object []' car ce n'est pas un type de délégué

this.unityContainer 
    .RegisterType<IService1Client, Service1Client>() 
    .Configure<InjectedMembers>() 
    .ConfigureInjectionFor<Service1Client>(
    new InjectionConstructor(() => 
     this.unityContainer.Resolve<User>() 
     .SelectedDepartment 
     .ApplicationServerUrl 
     .ToString())); 

Cheers,

Répondre

3

pense avoir trouvé la réponse moi-même:

Func<string> GetApplicationServerUrl =() => { 
    return this.unityContainer.Resolve<User>() 
    .SelectedDepartment 
    .ApplicationServerUrl 
    .ToString(); 
}; 

this.unityContainer.RegisterType<IService1Client, Service1Client>() 
    .Configure<InjectedMembers>() 
    .ConfigureInjectionFor<Service1Client>(
    new InjectionConstructor(GetApplicationServerUrl())); 
5

Vous pouvez utiliser le InjectionFactory.

this.unityContainer.RegisterType<IService1Client>(
    new InjectionFactory((ctr, type, name) => 
    { 
    User user = this.unityContainer.Resolve<User>(); 
    string url = user.SelectedDepartment.ApplicationServerUrl.ToString(); 
    return new Service1Client(url); 
    }));