У меня есть модель с определенными свойствами. Я использую отдельный класс с MetadataType для определения требований к свойствам. Я также пытаюсь использовать тот же класс метаданных с моделью представления, определяющей только подмножество свойств. Это простой пример кода ситуации для пояснения:
[MetadataType(typeof(Metadata))]
class ModelA
{
public class Metadata
{
[Required]
public object Property1 { get; set; }
[Required]
public object Property2 { get; set; }
}
public int Property1 { get; set; }
public int Property2 { get; set; }
}
[MetadataType(typeof(ModelA.Metadata))]
class ViewModelA
{
public int Property1 { get; set; }
}
Проблема в том, что когда движок бритвы пытается обработать представление, он выдает InvalidOperationException со следующим сообщением об ошибке:
Связанный тип метаданных для типа «ViewModelA» содержит следующие неизвестные свойства или поля: Property2. Убедитесь, что имена этих элементов совпадают с именами свойств основного типа.
Насколько я понимаю, проблема здесь в том, что метаданные содержат свойства, которых нет в модели представления. Однако таким образом я не очень понимаю преимущества наличия класса метаданных. Итак, мои вопросы
1) Есть ли способ предотвратить создание этого исключения?
2) Если нет, то какой шаблон лучше всего подходит для этой ситуации? (например, используя модель, модель представления, которая содержит подмножество свойств модели, определяя аннотации данных, сохраняя подход DRY).