Допустим, у меня есть сборка домена, которая описывает модель домена, и у нее есть класс с именем product:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
}
У меня также есть другая сборка, которая является веб-приложением, работающим с этой моделью домена.Теперь я хочу создать форму для создания новых продуктов и проверки некоторых атрибутов.Самый простой способ сделать это - использовать DataAnnotations в классе.Однако это приводит к тому, что модель предметной области теперь содержит метаданные о проверке формы, что не очень четкое разделение проблем.
Возможно иметь атрибут MetadataType
для класса, но я вижу это как нетлучше.Внезапно ваш класс модели предметной области становится зависимым от класса метаданных проверки формы.
Другой способ - создать класс CreateProductForm
, добавить туда необходимые атрибуты и выполнить сопоставление между классами.Однако это создает некоторые накладные расходы, так как вам нужно поддерживать эти классы отдельно, и изменения в одном могут сломать другой.В некоторых сценариях может быть желательно сделать это, но в некоторых других это может просто создать дополнительную работу (например, представьте, что у вас есть класс Address).
ОБНОВЛЕНИЕ: некоторые люди предложили мне использовать AutoMapperдля этого, о котором я уже знаю.AutoMapper просто делает отображение проще и проще, на самом деле не решает проблему необходимости поддерживать два отдельных класса, которые будут почти идентичны.Я предпочел бы создавать классы форм только тогда, когда в этом есть явная необходимость.
Есть ли прямое объявление аннотаций в веб-сборке без создания ненужных зависимостей для сборки домена?