У меня есть проблемный домен, где пользователь должен иметь возможность создать объект «ProductType», в котором каждый объект ProductType должен иметь агрегированный список «ProductTypeProperties», а каждый объект ProductTypeProperty должен иметь агрегированный список «ProductTypePropertyValues».
После этого пользователь может создать объект «Product» и связать с ним несколько ProductTypes.
Когда пользователь связывает Product с несколькими ProductTypes, он может указывать значения ProductTypeProperties для объекта Product.
ProductTypeProperties может иметь значения, которые принадлежат различным режимам выбора, например: «один выбор», «множественный выбор» и «ввод строки / целого числа / десятичного числа»
Я не уверен, как спроектировать такую объектную модель домена. Особенно, как применить значения свойств ProductType к объекту Product.
В настоящее время я не против сохранности, только в отношении модели предметной области, поскольку я могу свободно выбирать базу данных SQL / Document / Object / Graph.
Структура объекта теперь выглядит следующим образом:
ProductType
List<ProductTypeProperty>
List<ProductTypePropertyValue>
Product
List<ProductType>
Определение классов C #, которое я сейчас использую:
public class Product {
public string Name { get; set; }
public List<ProductType> AssociatedProductTypes { get; set; }
// how to apply ProductType's property values to a Product object?
}
public class ProductType {
public string Name { get; set; }
public List<ProductTypeProperty> AggregatedProperties { get; set; }
}
public class ProductTypeProperty {
public string Name { get; set; }
public List<ProductTypePropertyValue> AggregatedAvailableValues { get; set; }
}
public class ProductTypePropertyValue {
public string Name { get; set; }
}
Это похоже на попытку применить структуру класса / объекта в объектах, где «ProductType» является «классом», а «Product» является «объектом», который может быть экземпляром «ProductTypes» и «наследовать» свойства и доступные значения от каждого из связанных видов продукции.
Я никогда не делал подобную объектную модель, поэтому очень интересно, как это сделать правильно.
Спасибо за любые идеи и предложения.