12

Questo è il mio dad classeCome configurare il container unity per fornire il valore del costruttore di stringhe?

public class Dad 
    { 
     public string Name 
     { 
      get;set; 
     } 
     public Dad(string name) 
     { 
      Name = name; 
     } 
    } 

Questo è il mio metodo di prova

public void TestDad() 
     { 
      UnityContainer DadContainer= new UnityContainer(); 
      Dad newdad = DadContainer.Resolve<Dad>();  
      newdad.Name = "chris";  
      Assert.AreEqual(newdad.Name,"chris");     
     } 

Questo è l'errore che sto ottenendo

"InvalidOperationException - the type String cannot be constructed. 
You must configure the container to supply this value" 

Come faccio a configurare il mio DadContainer per questo affermazione per passare? Grazie

+0

Dai un'occhiata all'iniezione del costruttore. :) – user1908061

risposta

25

Si dovrebbe fornire un costruttore senza parametri:

public class Dad 
{ 
    public string Name { get; set; } 

    public Dad() 
    { 
    } 

    public Dad(string name) 
    { 
     Name = name; 
    } 
} 

Se non è possibile fornire un costruttore senza parametri, è necessario configurare il contenitore di fornire, mediante registrazione direttamente con il contenitore:

UnityContainer DadContainer = new UnityContainer(); 
DadContainer.RegisterType<Dad>(
    new InjectionConstructor("chris")); 

o attraverso il file app/web.config:

<configSections> 
    <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/> 
</configSections> 

<unity> 
    <containers> 
    <container> 
     <register type="System.String, MyProject"> 
     <constructor> 
      <param name="name" value="chris" /> 
     </constructor> 
     </register > 
    </container> 
    </containers> 
</unity> 
+0

è così semplice? LOL ... ma cosa succede se non posso e il costruttore deve avere un parametro stringa? (Per qualche motivo che non riesco a pensare in questo momento) –

+0

Questo non risponde alla domanda. – user1908061

+0

@iAteABug_And_iLiked_it Vedere la mia risposta aggiornata –

Problemi correlati