Vous devez faire une propriété d'un type de collection, comme List<Project>
. Cependant, il y a une décision à prendre: Est-ce qu'une classe externe aura un accès complet pour ajouter ou supprimer des projets directement à partir de la propriété de collection Projects, ou les classes externes ne pourront-elles lire que la collection?
Si une autre classe peut avoir un accès complet à la liste de projets, vous devez choisir le type externe auquel la liste sera exposée. Cela peut être une bonne idée d'exposer en tant que IList<Project>
ou ICollection<Project>
selon ce que vous voulez que les autres classes puissent faire.
Si d'autres classes ne ont libre accès à la liste, vous pouvez l'exposer comme IEnumerable<Project>
afin qu'ils puissent faire tout itérer sur la liste. En outre, si aucune autre classe n'a un accès direct, vous devrez ajouter des méthodes à la classe Client pour permettre l'ajout et/ou la suppression de projets. En autorisant uniquement l'accès externe basé sur l'interface à la liste des projets, vous vous permettez de changer la structure de données sous-jacente en une autre compatible sans casser aucun autre code. Par exemple, si la propriété est IEnumerable<Project>
, vous pouvez remplacer le code interne d'un List<Project>
par un tableau (Project[]
) et aucun autre code n'a besoin de savoir.
Pour quelle partie avez-vous besoin d'aide? – Oded
Je peux créer la propriété de collection de base, mais comment informer la classe Client de ce que les projets lui appartiennent? –
Si vous utilisez 'EF' il va créer des classes par défaut à partir de tables, et vous pouvez décider comment concevoir votre DTO et l'améliorer, les solutions fournies ci-dessous sont valides, mais peut-être votre problème n'est pas une chose que nous pensons –