SimpleIoc(MVVMlight)依赖项在C#Windows应用商店中注入接口列表

SimpleIoc(MVVMlight)依赖项在C#Windows应用商店中注入接口列表,c#,windows-store-apps,inversion-of-control,mvvm-light,C#,Windows Store Apps,Inversion Of Control,Mvvm Light,是否可以在MVVM灯光下对接口列表使用依赖项注入 我已尝试将依赖项设置为列表IList。在ViewModelLocator中,我还尝试了使用和不使用列表。如果我在没有List的情况下执行此操作,我会得到一个缓存没有列表异常值,如果我在使用(for List)的情况下执行此操作,我会得到一个无首选构造函数异常(因为列表有多个构造函数,并且我无法设置属性,因为它是.net中的一个类) 我能想到的唯一可能的解决方案将限制我的可测试性,这将是将所有列表作为具体的实现,即 List<dataType

是否可以在MVVM灯光下对接口列表使用依赖项注入

我已尝试将依赖项设置为
列表IList
。在
ViewModelLocator
中,我还尝试了使用和不使用
列表
。如果我在没有
List
的情况下执行此操作,我会得到一个缓存没有列表异常值,如果我在使用(for List)的情况下执行此操作,我会得到一个无首选构造函数异常(因为列表有多个构造函数,并且我无法设置属性,因为它是.net中的一个类)

我能想到的唯一可能的解决方案将限制我的可测试性,这将是将所有列表作为具体的实现,即

List<dataType> data = new List<dataType>();
列表数据=新列表();

有没有办法列出清单?或者您应该编写具体的代码?

ViewModelLocator可以具有通过它访问的静态对象

public class ViewModelLocator
{
    ....
    private static List<IMyInterface> _myInterfaces;
    public static List<IMyInterface> MyInterfaces
    {
        get
        {
            return _myInterfaces;
        }
        set
        {
            // So that it will be readonly. Technically unnecessary, but may be good
            // practice.
            if(_myInterfaces != null) return;
            _myInterfaces = value;
        }
    }
}

希望这有助于和快乐的编码

我认为那不太正确。。它所做的就是把我的IOC容器变成一个单体。。。我只是想澄清一下,我正在尝试这样做,以便我可以将接口列表注册到我的IOC容器中,然后动态分配列表中的类类型(实现接口的类),这在某种程度上就是您的IOC。它是对“单例”视图模型和控制器的静态访问,通过便携式接口声明。这样做确实会让您受益匪浅,例如更简单的集中式配置、生命周期管理、更好的可测试性、更低的耦合性、关注点分离等。我只是尝试使用我的IOC容器来初始化所有列表,并使用我指定的接口来实现特定的实现。。从外观上看,你应该使用IoC的主要方式是界面->实现而不是容器->容器。你可以让IoC在任何时候创建容器,你只需要让你的应用程序在运行时注入内容<代码>ViewModelLocator.MyInterfaces.Add(myExampleObject)
ViewModelLocator.MyInterfaces = GetMyInterfaceList();