как использовать Mvvmlight SimpleIoc? [закрытый]
Я обновляю свое программное обеспечение, которое имеет грязный Messenger.Default(...)
бит.
есть ли шпаргалка, чтобы знать использование Mvvmlight SimpleIoc (не общее описание IoC)?
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>();
}
если вы находитесь в режиме времени разработки, он автоматически зарегистрирует ваши услуги времени разработки, что делает его очень легко иметь данные в ваших viewmodels и views при работе в VS designer.
Надежда эта помощь.