我在一个ASP.NET MVC控制器的操作方法中注入了一个依赖项。
场景:我想使用ASP.NET MVC控制器的接口操作方法。这个接口由两个类实现。例如,modelA和modelB都实现了interfaceA。在运行时,当用户根据dropdown的值更改dropdown中的值时,依赖注入应该决定是应该注入modelA还是modelB。
另外,我不确定DI是唯一的解决方案,还是存在其他解决方案?或者工厂模式不确定。
发布于 2016-11-01 15:28:14
您可以使用工厂模式:
public interface InterfaceAFactory
{
InterfaceA Create(int dropDownValue);
}
public class AFactory : InterfaceAFactory
{
private readonly IContainer _container;
public AFactory(IContainer container)
{
_container = container;
}
public InterfaceA Create(int dropDownValue)
{
if(dropDownValue > 0)
return _container.GetInstance<ModelA>();
_container.GetInstance<ModelB>();
}
}(或者简单地注入所需的依赖项,而不是容器),然后简单地
private readonly InterfaceAFactory _interfaceAFactory;
public MvcController(InterfaceAFactory interfaceAFactory)
{
_interfaceAFactory = interfaceAFactory;
}
public void DropDownValueChanged(int dropDownValue)
{
var model = _interfaceAFactory.Create(dropDownValue);
}我使用过StructureMap,但您可以将其应用于AutoFac (注册实例、注入容器和解析实例)。
https://stackoverflow.com/questions/40354578
复制相似问题