为了更多地了解这一点,我想要求最好的路径
我有什么
client.ws_version = 1 or 2
IWebServiceRepository repository;
if(client.ws_version == 1)
repository = new WebServiceRepositoryVersion1();
else
repository = new WebServiceRepositoryVersion2();
我学到了什么
这是最糟糕的事情:)
所以问题是实现这个目标的最佳方式是什么?立面?依赖注入?其他过程?
答案 0 :(得分:3)
如果声明很简单,那实际上并不是一个糟糕的方法,但你应该将你的声明封装在WebServiceRepositoryProvider
public class WebServiceRepositoryProvider
{
public IWebServiceRepository GetRepository(ClientTable context)
{
return context.ws_version == 1
? new WebServiceRepositoryVersion1()
: new WebServiceRepositoryVersion2();
}
}
您可以通过控制容器的多次反转来配置此功能,但在您的应用中为这样一个简单的功能实现DI会是过分的。