1

J'ai un domaine de problème où l'utilisateur devrait être capable de créer un objet "ProductType" où chaque objet ProductType devrait avoir une liste de "ProductTypeProperties" agrégée et chaque objet ProductTypeProperty devrait avoir une liste de "ProductTypePropertyValues" agrégée. Après que l'utilisateur est capable de créer un objet "Product" et d'associer quelques ProductTypes avec lui.Aide à la modélisation de domaine: Product & ProductType & ProductyTypeProperties & ProductyTypePropertyValues ​​

Lorsque l'utilisateur associe Product avec quelques ProductTypes, l'utilisateur peut spécifier des valeurs de ProductTypeProperties à l'objet Product.

ProductTypeProperties pourraient avoir des valeurs qui appartiennent à différents modes de sélection, comme: « un choix », « plusieurs choix » et « string/entier/décimal entrée »

Je ne sais pas comment concevoir cette modèle d'objet de domaine. Surtout comment appliquer les valeurs de propriété de ProductType sur l'objet Product. Cela ne me dérange pas à propos de la persistance à ce moment, seulement sur le modèle de domaine d'objet, car je suis libre de choisir la base de données SQL/Document/Objet/Graph.

La structure de l'objet ressemble maintenant à ceci:

ProductType 
    List<ProductTypeProperty> 
     List<ProductTypePropertyValue> 

Product 
    List<ProductType> 

Les classes C# définition que je l'utilise pour est maintenant:

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; } 
} 

Il ressemble à essayer d'appliquer la structure des classes/d'objets dans les objets, où "ProductType" est une "classe" et "Product" est un "objet" qui peut être une instance "ProductTypes" et des propriétés "inherit" et des valeurs disponibles de chacun des types de produits associés.

Je ne faisais jamais un modèle d'objet comme celui-ci, donc c'est très intéressant comment le faire correctement. Merci pour vos idées et suggestions.

+0

Il semble que vous ayez déjà un modèle d'objets qui reflète correctement la structure que vous recherchez (produits avec plusieurs types de produits, types de produits avec plusieurs propriétés, propriétés avec plusieurs valeurs possibles). Si vous l'avez déjà modélisé, quelle est la question? – edutesoy

Répondre

2

Vous pouvez mapper la ProductTypeProperty comme suit:

Une classe de propriété de base générique, où TValue déterminera le type de valeur de la propriété (pourrait être une chaîne, décimal, int, ou choix multiple):

public abstract class ProductTypePropertyBase<TValue> 
    { 
     public string Name { get; set; } 
     public TValue Value { get; set; } 

     protected ProductTypePropertyBase(string name, TValue value) 
     { 
      Name = name; 
      Value = value; 
     } 
    } 

pour chaque type de bien créer une classe imbriquée, par exemple pour un simple propriété de chaîne vous pouvez créer:

public class ProductTypeStringProperty : ProductTypePropertyBase<string> 
{ 
    public ProductTypeStringProperty(string name, string value) : base(name, value) 
    { 
    } 
} 

pour un type de propriété complexe comme m ultiple choix que vous pouvez mettre en œuvre:

public class ProductTypeMultipleChoiceProperty : ProductTypePropertyBase<MultipleChoiceValue> 
{ 
    public ProductTypeMultipleChoiceProperty(string name, MultipleChoiceValue value) : base(name, value) 
    { 
    } 
} 

où MultipleChoiceValue est un autre type qui représente une liste de chaînes par exemple.

Questions connexes