Tôi có IRepository < T> và triển khai SqlRepository < T>. SqlRepository có tham số DataContext trong hàm tạo.Tiêm đối tượng khác nhau vào hàm tạo với StructureMap cho trường hợp nhất định
cấu hình SM trông như thế này:
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;
});
Nhưng đối với xây dựng IRepository < SpecificObject> tôi muốn tiêm DataContext khác nhau. Làm thế nào để nói SM rằng khi tôi yêu cầu IReposiotry < SpecificObject> Tôi muốn DataContext khác nhau, không FirstDataContext nhưng SecondDataContext (mà DC đi đến cơ sở dữ liệu khác nhau).
Ví dụ, khi tôi yêu cầu IRepository < T> Tôi muốn FirstDataContext được tiêm, nhưng khi tôi yêu cầu explicity cho IRepository < Sản phẩm> Tôi muốn SecondDataContext được tiêm.
Ngoài ra, SecondDC đó nên được Hybrid lưu trữ bởi SM!
nó đã hoạt động! Tuyệt vời, thanx rất nhiều! –