J'ai IRepository < T>, et l'implémentation SqlRepository < T>. SqlRepository possède un paramètre DataContext dans le constructeur.Injecter un objet différent au constructeur avec StructureMap pour certain cas
configuration SM ressemble à ceci:
x.ForRequestedType(typeof(IRepository<>))
.TheDefaultIsConcreteType(typeof(SqlRepository<>));
x.ForRequestedType<DataContext>().CacheBy(InstanceScope.Hybrid)
.TheDefault.Is.ConstructedBy(()=>{
var dc = new FirstDataContext();
dc.Log = new DebuggerWriter();
return dc;
});
Mais pour la construction de IRepository < SpecificObject> Je veux injecter différents DataContext. Comment puis-je dire SM que quand je demande IReposiotry < SpecificObject> Je veux différent DataContext, pas FirstDataContext mais SecondDataContext (que DC va à la base de données différente). Par exemple, quand je demande IRepository < T> Je veux que FirstDataContext soit injecté, mais quand je demande explicitement pour IRepository < Product> Je veux que SecondDataContext soit injecté.
En outre, que SecondDC devrait être mis en cache hybride par SM!
cela a fonctionné! Super, merci beaucoup! –