Je dois me battre toute la journée et je ne peux trouver aucune solution à mon problème. Entendre est mon problème: Je HAWE deux classes qui mettent en œuvre une interfaceStructureMap Utilisation conditionnelle
public interface ICacheObject
{
string Get();
}
public class WebCacheObject : ICacheObject
{
public string Get()
{
return "Web";
}
}
public class SysteCacheObject : ICacheObject
{
public string Get()
{
return "System";
}
}
Ainsi, dans un autre clase Par exemple, en classe Test I Nead pour injecter le WebCacheObject et Test2 clase i Nead d'injecter SystemCacheObject. Je l'ai fait en Initialiser:
ObjectFactory.Initialize(c =>{ c.For<IMessage>().Use<Message>();
c.For<ICacheObject>().ConditionallyUse(t =>{t.If(g => g.RequestedName == "HTTP")
.ThenIt.Is.ConstructedBy(
() =>
new WebCacheObject());
t.If(g =>g.RequestedName =="OtherCache")
.ThenIt.Is.ConstructedBy(
() =>
new SysteCacheObject
());
});
Mais je ne sais pas comment appeler Test-s clase-s donc si je l'appelle si la condition est vraie (ou comment changer condition pour que cela fonctionne)
ObjectFactory.GetInstance < « ITest>()
le test Clase sera hawe WebCache dans d'autres cas SystemCache ???
Désolé pour mon mauvais anglais.
La solution @PHeiberg est tellement plus propre que cela! – Sadegh