Я весь день борюсь за голову, и я не могу найти решение для своего дела, поэтому я не помогу. Слышать это моя проблема: я Hawe два класса, которые реализуют один интерфейсStructureMap Условное использование
public interface ICacheObject
{
string Get();
}
public class WebCacheObject : ICacheObject
{
public string Get()
{
return "Web";
}
}
public class SysteCacheObject : ICacheObject
{
public string Get()
{
return "System";
}
}
Так что в каком-то другом Clase Для примера в тестовом классе я СВАО впрыснуть WebCacheObject и test2 Clase я СВАО впрыснуть SystemCacheObject. Я сделал это в Initialize:
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
());
});
Но я не знаю, как назвать Test-s Clase-s, так что если я называю так условие истинно (или как изменить состояние, так что это будет работать)
< ObjectFactory.GetInstance «ITest>()
Тест Clase будет Hawe Webcache в другом случае SystemCache ???
Извините за мой плохой английский.
@PHeiberg решение настолько чище, чем это! – Sadegh