如何使用MVVMLight SimpleIoc? [关闭](how to use MVVMLig

2019-06-21 20:19发布

我改造我的软件,该软件具有凌乱Messenger.Default(...)位。

是否有任何小抄知道MVVMLight SimpleIoc使用(而不是一般的IoC说明)?

Answer 1:

SimpleIoc婴儿床表:

1)您注册在ViewModelLocator所有的接口和对象

class ViewModelLocator 
{ 
    static ViewModelLocator() 
    {         
        ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);          
        if (ViewModelBase.IsInDesignModeStatic) 
        {              
            SimpleIoc.Default.Register<IDataService, Design.DesignDataService>();          
        }          
        else         
        {              
            SimpleIoc.Default.Register<IDataService, DataService>();          
        }          
        SimpleIoc.Default.Register<MainViewModel>();                  
        SimpleIoc.Default.Register<SecondViewModel>(); 
    }      


    public MainViewModel Main 
    {  
        get  
        {      
            return ServiceLocator.Current.GetInstance<MainViewModel>();  
        } 
    }
} 

2)每一个对象是一个单默认。 要解决的对象,因此,它不是你需要一个独特的价值传递给的GetInstance调用单:

SimpleIoc.Default.GetInstance<MainViewModel>(Guid.NewGuid().ToString());

3)要注册针对接口的类:

SimpleIoc.Default.Register<IDataService, Design.DesignDataService>();  

4)要注册针对的接口的具体对象:

SimpleIoc.Default.Register<IDataService>(myObject);     

5)要注册一个具体类型:

SimpleIoc.Default.Register<MainViewModel>();   

6)要解决从接口的对象:

SimpleIoc.Default.GetInstance<IDataService>();

7)以直接解决的对象(不积聚和依赖分辨率):

SimpleIoc.Default.GetInstance<MainViewModel>();

8)MVVM了做设计时的数据很容易:

if (ViewModelBase.IsInDesignModeStatic) 
{              
    SimpleIoc.Default.Register<IDataService, Design.DesignDataService>();          
}          
else         
{              
    SimpleIoc.Default.Register<IDataService, DataService>();          
}  

如果您在设计时模式是它会自动注册您的设计时服务,使得它很容易在VS设计师的工作时,在你的ViewModels和视图中的数据。

希望这可以帮助。



文章来源: how to use MVVMLight SimpleIoc? [closed]