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