Я обновляю свое программное обеспечение с беспорядочными битами Messenger.Default(...)
.
Есть ли чит-лист для ознакомления с MVVMLight SimpleIoc (не общее описание IoC)?
Я обновляю свое программное обеспечение с беспорядочными битами Messenger.Default(...)
.
Есть ли чит-лист для ознакомления с MVVMLight SimpleIoc (не общее описание IoC)?
Лист шпалы 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.
Надеюсь, что это поможет.