Когда я делаю Приложения MVVM, у меня обычно есть центральный локатор ViewModel, который работает с шаблоном локатора сервиса. Это позволяет мне вводить ViewModel с сервисами через Ninject
Мой локатор ViewModel обычно выглядит так:
public class ViewModelLocator
{
private static IKernel kernel;
public ViewModelLocator()
{
if (kernel == null)
{
kernel = new StandardKernel(new ConfigModule());
}
}
public static T Get<T>()
{
return kernel.Get<T>();
}
public static ProductViewModel ProductViewModel{
get { return kernel.Get<ProductViewModel>(); }
}
public UserViewModel UserViewModel {
get { return kernel.Get<UserViewModel>();}
}
}
public class ConfigModule : NinjectModule
{
public override void Load()
{
Bind<ProductViewModel>().ToSelf();
Bind<UserViewModel>().ToSelf();
}
}
Сейчас я думаю о добавлении еще одного модуля, который называется "Заказы". Так что у меня будет OrderViewModel (или в реальной жизни пару из них). И я хочу, чтобы они были отделены и импортированы через MEF.
Как можно расширить / изменить этот подход, чтобы иметь возможность работать с центрическим локатором видовой модели и импортированными моделями и представлениями.
Да, я знаю Призму и Калибурн, но мне было бы интересно увидеть подход ...
Спасибо за любую помощь ....