C# classe abstraite champ statique de l'héritage

Je me sens comme j'ai sauté une classe C# ou deux, mais voici mon dilemme:

J'ai une classe abstraite à partir de laquelle je tire plusieurs classes enfant.

Je sais pour sûr que, pour chacun des enfants des classes, je vais avoir un constructeur qui a besoin d'un certain objet statique comme un modèle et cet objet sera différente pour chacune des classes enfant.

Ma première approche a été de rendre publique une statique de l'objet dans l'abstrait classe parent et puis, avant de commencer à créer toutes les instances de l'enfant des classes, je voudrais le modifier pour chacun d'eux, mais il s'avère que, de cette façon, en fait je n'en font qu'UN objet statique, pour la classe abstraite, et chacun de ses classes enfant l'utilise.

Comment pourrais-je résoudre le problème?

Pour être plus précis, voici le pseudo-code:

Le parent classe abstraite:

 abstract class AbstractClass
{
   static public ModelObject Model;
   ...
}

L'une des classes enfant:

class Child : AbstractClass
{
    ...
    public Child()
    {
        this.someField = Model.someField;
    }
}

EDIT:

Le Modèle doit être un membre de la "ModelObject" de la classe, il ne devrait PAS être un singleton ou quoi que ce soit d'autre.

EDIT2:

Pour être encore plus exact, j'ai choisi cette mise en œuvre pour un jeu d'échecs: j'ai une classe abstraite pour les pièces d'échecs et de l'enfant les classes représentent les pièces en béton du jeu: les pions, les cavaliers, et cetera.

La classe abstraite hérite de MeshMatObject, une classe qui représente générique des objets en 3d avec les fonctionnalités de base, comme les rotations, des mailles, des matériaux, des textures et ainsi de suite et il définit des méthodes abstraites pour jeu d'échecs morceaux, comme GetPossibleMoves().

Le Modèle objet dont je parlais ci-dessus est un membre de la MeshMatObject et, à mon avis, devrait être définie en dehors de la classe, juste une fois, et ensuite utilisé pour toutes les pièces. Je veux dire: par exemple tous les pions ont le même maillage et de la texture, donc je ne vois pas l'intérêt d'en donner un modèle en tant que paramètre à chaque fois que vous voulez faire un pion.

En quoi AbstractClass besoin pour accéder au Modèle?
Vous devriez envisager l'adoption d'une instance du Modèle de votre sous-classes " constructeurs au lieu d'utiliser un tel champ statique.
Je suis d'accord avec Trillian. Avoir un modèle statique est vraiment violation de l'esprit de l'encapsulation ici.
La classe abstraite n'a pas réellement besoin pour accéder au modèle. L'enfant les classes ont besoin pour accéder à leurs constructeurs @Trillian: oui, ce serait une solution et en fait c'était ma première mise en œuvre, mais puisque tous les objets de la classe sont construits d'après le même modèle exact, je pense qu'il conviendrait de mieux définir le modèle, seulement une fois à l'intérieur de la classe et de l'utilisation du champ statique de construire de nouvelles instances.
Pourquoi a-t-il besoin d'être statique? Partagez-vous l'état entre toutes les classes?

OriginalL'auteur cantrem | 2010-08-22