2009-05-04 12 views
1

J'ai une classe qui est utilisée par deux processus différents avec chaque processus utilisant différentes propriétés de la classe. Chaque fois qu'un processus nécessite une nouvelle propriété, je l'ajoute simplement à la classe. Est-ce une mauvaise idée? Dois-je créer deux classes distinctes et les mettre à jour si nécessaire?classe pour différents usages

N.B. Parfois, la même propriété est utilisée par les deux processus et chaque processus utilise une instance différente de la classe.

+0

Cette question devient inutile si vous continuez à mélanger des informations de niveau instance (objets) avec des informations de niveau statique (classes). –

Répondre

6

Les propriétés communes peuvent être conservées dans une seule classe. Ensuite, vous pouvez dériver deux classes différentes de la classe commune et ajouter des propriétés spécifiques.

+1

De plus, les classes dérivées n'ont pas besoin d'être dans la même bibliothèque/espace de noms que les classes dérivées. Chaque projet/programme qui hérite de la classe de base crée sa propre classe enfant dans son propre espace de nom afin qu'une mise à jour d'un projet n'affecte pas l'autre projet. Ce n'est que lorsque les propriétés de classe de base (partagées) changent que vous devrez recompiler les deux projets. – tvanfosson

0

Utilisez une liste de membres contenant des paires (propriété nommée, valeur) dans la classe. Ajoutez à cela une fabrique avec deux méthodes renvoyant des instances avec le bon ensemble de propriétés.

1

« Propriétés communes peuvent être conservés dans une seule classe Ensuite, vous pouvez déduire deux classes différentes de la classe commune et ajouter des propriétés spécifiques. » - Kirtan Gor

class BaseClassWithSharedProperties 
{ 
    public Int32 SharedId { get; set; } 
    public String SharedName { get; get; } 
} 

class UniqueClassNumberOne : BaseClassWithSharedProperties 
{ 
    public UniqueClassNumberOneProperty { get; set; } 
} 

class UniqueClassNumberTwo : BaseClassWithSharedProperties 
{ 
    public UniqueClassNumberTwoProperty { get; set; } 
} 
Questions connexes