【问题标题】:SimpleIoc issue within WPF MVVM light applicationWPF MVVM 轻应用程序中的 SimpleIoc 问题
【发布时间】:2015-02-13 08:52:47
【问题描述】:

我有一个使用 MVVM Light 的 wpf 应用程序。我有两个类和接口:

public interface ICrud{
//
}

public class CrudDAO : ICrud{
//
}

public class CrudEF : ICrud{
//
}

我有两个视图模型:

  public class CrudDAOVM {
       public  ICrud icrud;
       public CrudDAOVM (ICrud _icrud)
       {
        icrud = _icrud;
       }
                         }

    public class CrudEFVM {
       public  ICrud icrud;
       public CrudEFVM (ICrud _icrud)
        {
        icrud = _icrud;
        }
                          }

我想使用 SimpleIoc 来注入依赖项。所以我在 ViewModelLocator 中添加了这段代码:

SimpleIoc.Default.Register<ICrud , CrudDAO >(); //I'd like to add the condition here
SimpleIoc.Default.Register<ICrud , CrudEF >();//I'd like to add the condition here

我想添加一个条件,指定inside CrudVMDAO, the implementation of ICrud is CrudDAO, and inside CrudVMEF, the implementation of ICrud is CrudEF

是否可以使用SimpleIoc 做到这一点?

【问题讨论】:

    标签: c# wpf mvvm dependency-injection mvvm-light


    【解决方案1】:

    如果你想注册多个实现,你可以在注册时添加一个键来区分它们,如下所示。

    SimpleIoc.Default.Register<ICrud>(() => new CrudDAO(), "CrudDAO");
    SimpleIoc.Default.Register<ICrud>(() => new CrudEF(), "CrudEF");
    

    CrudVMDAO 内部:

    SimpleIoc.Default.GetInstance<ICrud>("CrudDAO");
    

    CrudVMEF 内部:

    SimpleIoc.Default.GetInstance<ICrud>("CrudEF");
    

    【讨论】:

      猜你喜欢
      • 2018-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-15
      • 2014-03-09
      • 1970-01-01
      相关资源
      最近更新 更多