首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >条件注入依赖注入

条件注入依赖注入
EN

Stack Overflow用户
提问于 2016-11-01 13:29:18
回答 1查看 69关注 0票数 2

我在一个ASP.NET MVC控制器的操作方法中注入了一个依赖项。

场景:我想使用ASP.NET MVC控制器的接口操作方法。这个接口由两个类实现。例如,modelA和modelB都实现了interfaceA。在运行时,当用户根据dropdown的值更改dropdown中的值时,依赖注入应该决定是应该注入modelA还是modelB。

另外,我不确定DI是唯一的解决方案,还是存在其他解决方案?或者工厂模式不确定。

EN

回答 1

Stack Overflow用户

发布于 2016-11-01 15:28:14

您可以使用工厂模式:

代码语言:javascript
复制
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>();
    }
}

(或者简单地注入所需的依赖项,而不是容器),然后简单地

代码语言:javascript
复制
private readonly InterfaceAFactory _interfaceAFactory;

public MvcController(InterfaceAFactory interfaceAFactory)
{
    _interfaceAFactory = interfaceAFactory;
}

public void DropDownValueChanged(int dropDownValue)
{
    var model = _interfaceAFactory.Create(dropDownValue);
}

我使用过StructureMap,但您可以将其应用于AutoFac (注册实例、注入容器和解析实例)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40354578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档