现在我有了一个基本的IRepository,它接收IConnect(包含一个字符串值)。我遇到了一个问题,我的DI(结构图)确定要使用哪个连接字符串。从理论上讲,如果我在实体上使用一个属性,我可以编写一个确定这个的注册表/扫描程序,但我想知道是否有更简单的方法来做到这一点?
现在我有类似的东西
ObjectFactory.Initialize(factory =>
{
factory.For<IConnect>().Singleton().Use<ConnectToMarket>()
.Ctor<string>("connectionString")
.Is(_marketConnectionString);
//and some other stuff
});
想法?
答案 0 :(得分:3)
您可以从不同的接口派生不同的存储库。假设您有一个IMarketRepository
,它是用市场连接字符串构建的。因此,使用marketconnectionstring
的所有存储库都是使用该连接字符串构建的(前提是您正确注册)。
我假设您不必为多个连接字符串使用相同的存储库?
另一种解决方案可能是制作IConnectionString
的多个实现或者您可以在构造函数中指定的内容。
我必须说两种解决方案都不是很好。