Правильное представление Model в ViewModel
Сразу к примеру. Допустим у нас есть класс с какими-то данными.
public class OrganizationDetails
{
public string Name { get; set; }
public string Address { get; set; }
}
Данные для этого класса мы получаем из файла через другой класс-парсер.
public class DocXService
{
public async Task<OrganizationDetails> ReadAsync(string filePath)
{
//Парсим и отдаем результат
return new OrganizationDetails();
}
}
После парсинга файла я создаю диалоговое окно, где вывожу полученные данные в двух TextBox и пользователь может их изменять. Мне нужно добавить валидацию этого класса и тут начинается мой вопрос.
Вопрос: могу ли я сразу унаследовать OrganizationDetails от ReactiveValidationObject(базовый класс для валидации из ReactiveUI) или же мне нужно создать отдельную VM OrganizationDetailsViewModel, где я пропишу все правила валидации.
Вариант 1(делал всегда так):
public class OrganizationDetails : ReactiveValidationObject
{
[Reactive]
public string Name { get; set; }
[Reactive]
public string Address { get; set; }
public OrganizationDetails()
{
this.ValidationRule(
x => x.Name,
x => !string.IsNullOrWhiteSpace(x),
"Требуется");
this.ValidationRule(
x => x.Address,
x => !string.IsNullOrWhiteSpace(x),
"Требуется");
}
}
2 вариант:
public class OrganizationDetailsViewModel : ReactiveValidationObject
{
[Reactive]
public string Name { get; set; }
[Reactive]
public string Address { get; set; }
public OrganizationDetailsViewModel(OrganizationDetails details)
{
Name = details.Name;
Address = details.Address;
this.ValidationRule(
x => x.Name,
x => !string.IsNullOrWhiteSpace(x),
"Требуется");
this.ValidationRule(
x => x.Address,
x => !string.IsNullOrWhiteSpace(x),
"Требуется");
}
}