Переопределение статического поляC#

Место общения программистов C#
Ответить
Anonymous
 Переопределение статического поля

Сообщение Anonymous »

Я пишу игровой движок C# для своей игры и хочу добавить XNA.Rectangle drawRectangle для каждого типа блоков.
Блоки хранятся в списке< ParentType>, поэтому свойство необходимо переопределить, чтобы оно было доступно центральному методу рисования.
Я попытался реализовать подход со статическими полями:Block.cs

Код: Выделить всё

protected static Rectangle m_drawRectangle = new Rectangle(0, 0, 32, 32);
public Rectangle drawRectangle
{
get { return m_drawRectangle; }
}
BlockX.cs

Код: Выделить всё

protected static Rectangle m_drawRectangle = new Rectangle(32, 0, 32, 32);
Однако при создании BlockX и доступе к drawRectangle он по-прежнему возвращает Rectangle(0, 0, 32, 32).
В идеале я бы просто переопределил элемент drawRectangle, но это означало бы создание нового свойства для каждого блока, когда мне нужно только настроить m_drawRectangle. Я также хотел бы избежать использования нестатического поля, поскольку эти классы должны быть легкими - каждый блок будет создаваться сотни раз.
Есть ли лучший способ, кроме просто помещаем статическую функцию для инициализации статических объектов в каждом блоке?
Изменить:
Итак, подводя итог, мои требования:
  • Минимум дополнительного кода в BlockX.cs для override
  • Поле должно оставаться статическим
  • Желательно не переопределять drawRectangle, только m_drawRectangle.
  • Без необходимости создавать новый прямоугольник при каждом доступе к свойству


Подробнее здесь: https://stackoverflow.com/questions/111 ... atic-field
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»