私はIRepository < T>を実装し、SqlRepository < T>を実装しています。 SqlRepositoryにはコンストラクタにDataContextパラメータがあります。特定のケースのためにStructureMapでコンストラクタと異なるオブジェクトを挿入します。
SMの構成は次のようになります。
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;
});
しかしIRepository < SpecificObjectの建設のための>私は別のDataContextを注入します。私はIReposiotryを求めるときにSMと言うのですか?< SpecificObject> FirstDataContextではなく、別のデータベースに行くSecondDataContextではなく、別のDataContextが必要です。
例えば、IRepository < T>私はFirstDataContextを注入したいのですが、私はIRepository <のために明示的に尋ねるときProduct> SecondDataContextを注入します。
また、SecondDCはSMによってハイブリッドキャッシュされる必要があります。本当にあまりにも私を助けてくれ
偉大な、おかしなこと! –