Есть базовый интерфейсIViewModel для всех моих ViewModel. Все ViewModel используют DevExpress POCO механизм:
public static EfCaseCollectionViewModel Create(IUnitOfWorkFactory
Во ViewModel не используется без параметрический конструктор.
Unity контейнер я создаю при старте в статическом классе:
UnityContainer unityContainer = new UnityContainer();
unityContainer.RegisterType
Во View
public EfCaseCollectionView(IUnityContainer container)
{
this.DataContext = GetViewModel(container);
InitializeComponent();
}
private IViewModel GetViewModel(IUnityContainer container)
{
if (container.IsRegistered
Но без конструктора без параметров это не работает. (MissingMethodException:'System.MissingMethodException: No parameterless constructor defined for this object.). Как правильно использовать Unity в этой ситуации?
Ответ
Спасибо за ссылку, помогла как пища для размышлений.
Честно, часть вопроса связанная с Exception не связана с основной частью тем что я просто не уследил что в CodeBehind'е View UserControl нету конструктора без параметров.
По поводу основной части. Сделал так:
public static readonly UnityContainer UnityContainer = new UnityContainer();
public static void Resolve()
{
UnityContainer.RegisterType
Этот метод вызывается в App.xaml.cs
А в View Так:
public EfCaseCollectionView()
{
InitializeComponent();
this.DataContext = GetViewModel(Bootstrapper.UnityContainer);
}
private IViewModel GetViewModel(IUnityContainer container)
{
if (container.IsRegistered
Я не уверен что решение правильное, но мою текущую задачу оно выполнило.
Комментариев нет:
Отправить комментарий