在WPF MVVM轻量级应用程序中的SimpleIoc问题

时间:2015-02-13 08:52:48

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

我有一个使用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

执行此操作

1 个答案:

答案 0 :(得分: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");