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

时间:2014-03-26 02:37:05

标签: c# windows-store-apps inversion-of-control mvvm-light

是否可以在接口列表中使用MVVM中的依赖注入?

我已尝试将依赖关系设为List<IMyInterface> IList<IMyInterface>。在我ViewModelLocator内,我也尝试了List<>和不List<>。如果我在没有List<dataType> data = new List<dataType>(); 的情况下执行此操作,我会得到一个缓存并不具有List异常的值,如果我这样做,(对于List)我得到一个没有首选的构造函数异常(因为List有多个构造函数,而且我无法设置属性,因为它是.net中的一个类

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

{{1}}

有没有办法让IOC列表?或者你应该具体代码?

1 个答案:

答案 0 :(得分:1)

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;
        }
    }
}

然后在您的主应用程序中,只要您获得列表,

ViewModelLocator.MyInterfaces = GetMyInterfaceList();

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