如何使用 MVVMLight SimpleIoc? [英] how to use MVVMLight SimpleIoc?

查看:33
本文介绍了如何使用 MVVMLight SimpleIoc?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在改进我的软件,它有凌乱的 Messenger.Default(...) 位.

I'm revamping my software which has messy Messenger.Default(...) bits.

是否有任何备忘单可以了解 MVVMLight SimpleIoc 的用法(不是一般的 IoC 描述)?

Is there any cheat sheet to know MVVMLight SimpleIoc usage (not general IoC description)?

推荐答案

SimpleIoc Crib sheet:

SimpleIoc crib sheet:

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

1) You register all your interfaces and objects in the 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 调用:

2) Every object is a singleton by default. To resolve an object so that it's not a singleton you need to pass a unique value to the GetInstance call:

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

3) 为接口注册一个类:

3) To register a class against an interface:

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

4) 向接口注册一个具体的对象:

4) To register a concrete object against an interface:

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

5) 注册一个具体类型:

5) To register a concrete type:

SimpleIoc.Default.Register<MainViewModel>();   

6) 从接口解析对象:

6) To resolve an object from an interface:

SimpleIoc.Default.GetInstance<IDataService>();

7) 直接解析一个对象(进行构建和依赖解析):

7) To resolve an object directly (does buildup and dependency resolution):

SimpleIoc.Default.GetInstance<MainViewModel>();

8) MVVM 使处理设计时数据变得非常容易:

8) MVVM makes doing design-time data really easy:

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

如果您处于设计时模式,它会自动注册您的设计时服务,这使得在 VS 设计器中工作时在您的视图模型和视图中拥有数据变得非常容易.

If you're in design-time mode it will automatically register your design-time services, making it really easy to have data in your viewmodels and views when working in the VS designer.

希望这会有所帮助.

这篇关于如何使用 MVVMLight SimpleIoc?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆