StructureMap Uso condizionato

Per tutto il giorno ho un po ‘di stupore e non riesco a trovare nessuna soluzione per il mio caso, quindi aiuto. Ascoltare è il mio problema: ho due classi che implementano un’interfaccia

public interface ICacheObject { string Get(); } public class WebCacheObject : ICacheObject { public string Get() { return "Web"; } } public class SysteCacheObject : ICacheObject { public string Get() { return "System"; } } 

Quindi in qualche altro clase Per esempio in Class Test, devo iniettare il WebCacheObject e in Test2 clase non posso iniettare SystemCacheObject. L’ho fatto in Initialize:

  ObjectFactory.Initialize(c =>{ c.For().Use(); c.For().ConditionallyUse(t =>{t.If(g => g.RequestedName == "HTTP") .ThenIt.Is.ConstructedBy( () => new WebCacheObject()); t.If(g =>g.RequestedName =="OtherCache") .ThenIt.Is.ConstructedBy( () => new SysteCacheObject ()); }); 

Ma non so come chiamare il clase-s di Test così se lo chiamo così la condizione è vera (o come cambiare la condizione in modo che funzioni)

ObjectFactory.GetInstance ()

il Test Clase ti toglierà WebCache in altri casi SystemCache ???

Scusa per il mio cattivo inglese.

Penso che dovresti evitare la syntax della costruzione condizionale con if – se esiste un’alternativa più semplice. Nel tuo caso, penso che ciò farà:

 For().Use(); For().Use.Ctor().Is(); For().Use.Ctor().Is(); 

Grazie ho trovato la soluzione se qualcuno di voi non ha sentito (ho cambiato qualcosa in condizioni e funziona):

 x.For().ConditionallyUse(c => { c.If(t => t.ParentType == typeof(Test) || t.ParentType == typeof(Test2)) .ThenIt .Is.ConstructedBy( by => new HttpContextCacheAdapter()); c.TheDefault.Is.ConstructedBy( by => new NullObjectCache()); }); 

Scusa per il mio cattivo inglese