Herencia de campo estático de clase abstracta C #
Siento que me salté una o dos clases de C #, pero aquí está mi dilema:
Tengo una clase abstracta de la que deriva varias clases secundarias.
Sé con certeza que para cada una de las clases secundarias tendré un constructor que necesita un determinado objeto estático como modelo y este objeto será diferente para cada una de las clases secundarias.
Mi primer enfoque fue hacer un objeto estático público en la clase principal abstracta y luego, antes de comenzar a crear instancias de las clases secundarias, lo modificaría para cada una de ellas, pero resulta que de esta manera en realidad solo hago UNA objeto estático, para la clase abstracta, y cada una de sus clases secundarias lo usa.
¿Cómo podría resolver el problema?
Para ser más exactos, aquí está el pseudocódigo:
La clase abstracta padre:
abstract class AbstractClass
{
static public ModelObject Model;
...
}
Una de las clases infantiles:
class Child : AbstractClass
{
...
public Child()
{
this.someField = Model.someField;
}
}
EDITAR:
El modelo debe ser miembro de la clase "ModelObject", NO debe ser un singleton ni ninguna otra cosa.
EDIT2:
Para ser aún más exacto, elegí esta implementación para un juego de ajedrez: tengo una clase abstracta para las piezas de ajedrez y las clases secundarias representan las piezas concretas del juego: peones, caballeros, etc.
La clase abstracta hereda de MeshMatObject, una clase que representa objetos genéricos en 3D con la funcionalidad básica, como rotaciones, mallas, materiales, texturas, etc. y define métodos abstractos para piezas de juego de ajedrez, como GetPossibleMoves ().
El objeto Modelo del que hablaba anteriormente es miembro del MeshMatObject y, en mi opinión, debe definirse fuera de la clase solo una vez y luego usarse para todas las piezas. Quiero decir: por ejemplo, todos los peones tienen la misma malla y textura, así que no veo el punto de dar un modelo como parámetro cada vez que quieres hacer un peón.