how to use MVVMLight SimpleIoc? [closed] how to use MVVMLight SimpleIoc? [closed] wpf wpf

how to use MVVMLight SimpleIoc? [closed]


SimpleIoc crib sheet:

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) 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) To register a class against an interface:

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

4) To register a concrete object against an interface:

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

5) To register a concrete type:

SimpleIoc.Default.Register<MainViewModel>();   

6) To resolve an object from an interface:

SimpleIoc.Default.GetInstance<IDataService>();

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

SimpleIoc.Default.GetInstance<MainViewModel>();

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

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

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.

Hope this helps.