2010-07-20 5 views
0

j'essaie de modéliser la classe où la situation est similaire à:classe Modélisation

public class Car 
{ 
private List<Gratis> _gratises=new List<Gratis>(); 

public List<Gratis> Gratises 
    { 
      get { return _gratises; } 
      set { _gratises= value; } 
     } 

public class Gratis 
{ 
public string Name {get;set;} 

public int ID {get;set;} 
} 

Dans un lieu utilisateur gère la liste des gratises. Il peut ajouter, supprimer ou modifier des gratis.

Dans la deuxième boîte utilisateur du module gère les voitures:

Il peut ajouter ou supprimer gratis à la voiture.

Est-ce que mon modèle est bon?

Si oui, comment l'implémenter?

Je datagridview et:

obtenir la liste des gratis la base de données, et ensuite obtenir une liste de gratis de voiture?

Ou peut-être ajouter un champ IsChecked?

Sql Server 2005. asmx et WinForms

+0

est-ce un site web? Une application de bureau? Avez-vous essayé votre design et si oui quels problèmes avez-vous rencontrés, le cas échéant? – marcind

Répondre

2

Regardez approche M.Fowler refactoring Encapsulate Collection

A noter également que dans les propriétés obtenir un rendement en lecture seule collection:

public List<Gratis> Gratises 

{get {return _gratises.AsReadOnly(); } }

1

Il semble assez bon, 2 considérations:

  1. Pourquoi est-_gratises public? il est accessible par Gratises, il devrait probablement être privé

  2. ne vous dérange pas si quelqu'un remplace la liste « gratises » dans son intégralité? Si vous faites, je voudrais supprimer le setter et ajouter AddGratis(Gratis) et RemoveGratis(Gratis) les méthodes qui proxy à la liste sous-jacente.

+0

Pourquoi _gratises public? -il était erreur :) Conception avec Ajouter et supprimerGratis (gratis) semble bien :) – user278618