C # абстрактный класс наследование статического поля
Я чувствую, что пропустил класс C # или два, но вот моя дилемма:
У меня есть абстрактный класс, из которого я получаю несколько дочерних классов.
Я точно знаю, что для каждого из дочерних классов у меня будет конструктор, которому нужен определенный статический объект в качестве модели, и этот объект будет отличаться для каждого из дочерних классов.
Мой первый подход состоял в том, чтобы сделать публичный статический объект в абстрактном родительском классе, а затем, прежде чем я начну создавать какие-либо экземпляры дочерних классов, я бы изменил его для каждого из них, но оказывается, что таким образом я фактически делаю только ОДИН статический объект, для абстрактного класса, и каждый из его дочерних классов использует его.
Как я мог решить проблему?
Чтобы быть более точным, вот псевдокод:
Родительский абстрактный класс:
abstract class AbstractClass
{
static public ModelObject Model;
...
}
Один из детских классов:
class Child : AbstractClass
{
...
public Child()
{
this.someField = Model.someField;
}
}
РЕДАКТИРОВАТЬ:
Модель должна быть членом класса ModelObject, она НЕ должна быть одиночной или чем-то еще.
EDIT2:
Точнее, я выбрал эту реализацию для игры в шахматы: у меня есть абстрактный класс для шахматных фигур, а дочерние классы представляют конкретные части игры: пешки, рыцари и так далее.
Абстрактный класс наследует от MeshMatObject, класса, который представляет общие 3d-объекты с основными функциями, такими как вращение, сетки, материалы, текстуры и т. Д., И определяет абстрактные методы для шахматных фигур, таких как GetPossibleMoves ().
Объект Model, о котором я говорил выше, является членом MeshMatObject и, по моему мнению, должен быть определен вне класса только один раз, а затем использован для всех частей. Я имею в виду: например, все пешки имеют одинаковую сетку и текстуру, поэтому я не вижу смысла давать модель в качестве параметра каждый раз, когда вы хотите сделать пешку.