Обновление: Я занимаюсь решением проблемы, и я не совсем уверен, можем ли мы это сделать. Я буду обновлять этот вопрос, как только у меня есть лучшее понимание того, что я хочу :-)Общая логика проверки по двум различным моделям
Наш текущий проект использует WPF вместе с подходом MVVM. Наше приложение будет иметь несколько редакторов, каждый со своей собственной моделью.
мнение будет выглядеть следующим образом:
Каждый редактор имеет свою собственную модель/ViewModel/модель. Модель родительского представления (которая содержит все подредакторы) содержит данные, из которых могут быть загружены все подредакторы.
Поскольку пользователь должен иметь возможность сохранять текущее состояние в любое время, нам также нужно иметь возможность проверять существующие данные (поскольку пользователь мог ввести неверные данные). Таким образом, нам нужно подтверждение в двух местах:
- , когда пользователь вводит данные
- , когда данные загружаются снова после запуска приложения
Поскольку мы не хотим, чтобы преобразовать данные в каждый Sub Editor, чтобы получить результат проверки, родительская модель также должна быть проверена.
Единственный способ, которым я нашел для этого, - представить интерфейсы, которые в основном описывают структуру данных внутри класса, который должен быть проверен. Это может выглядеть так:
interface IValidateModel
{
string foo;
}
class Editor1Model : IValidateModel
{
string foo;
int someOtherProperty;
}
class Editor2Model: IValidateModel
{
string foo;
byte fooBar;
}
class ParentModel
{
Sub subProp;
// some other parent model properties
}
Недостатком является то, что теперь способ структурирования данных определяется интерфейсом.
У кого-нибудь есть опыт работы с этой проблемой или даже есть лучшее решение для этого?
Я не владею английским языком, поэтому, возможно, именно поэтому я не могу полностью понять ваш вопрос. Можете ли вы разместить более конкретный/фактический пример/код, пожалуйста? –
Как вы проводите проверку? – Domysee
Интерфейс, который вы называете 'IValidateModel', уже существует в WPF и называется' IDataErrorInfo'. Используя его, вы можете делегировать валидацию модели (независимо от того, сколько у вас ViewModels). Вы можете прочитать хороший [учебник здесь о codeproject] (http://www.codeproject.com/Tips/784331/WPF-MVVM-Validation-ViewModel-using-IDataErrorInfo) о проверке 'IDataErrorInfo'.Возможно, он может быть подходящим для вашего проекта. –