Блоки хранятся в списке< ParentType>, поэтому свойство необходимо переопределить, чтобы оно было доступно центральному методу рисования.
Я попытался реализовать подход со статическими полями:Block.cs
Код: Выделить всё
protected static Rectangle m_drawRectangle = new Rectangle(0, 0, 32, 32);
public Rectangle drawRectangle
{
get { return m_drawRectangle; }
}
Код: Выделить всё
protected static Rectangle m_drawRectangle = new Rectangle(32, 0, 32, 32);
В идеале я бы просто переопределил элемент drawRectangle, но это означало бы создание нового свойства для каждого блока, когда мне нужно только настроить m_drawRectangle. Я также хотел бы избежать использования нестатического поля, поскольку эти классы должны быть легкими - каждый блок будет создаваться сотни раз.
Есть ли лучший способ, кроме просто помещаем статическую функцию для инициализации статических объектов в каждом блоке?
Изменить:
Итак, подводя итог, мои требования:
- Минимум дополнительного кода в BlockX.cs для override
- Поле должно оставаться статическим
- Желательно не переопределять drawRectangle, только m_drawRectangle.
- Без необходимости создавать новый прямоугольник при каждом доступе к свойству
Подробнее здесь: https://stackoverflow.com/questions/111 ... atic-field
Мобильная версия