Я создаю структуру С#, в которой (почти) все мои классы будут основаны на одном абстрактном базовом классе. Этот базовый класс содержит несколько частных свойств, одним из которых является логическое Мусор.
В цикле отрисовки XNA я не хочу, чтобы какие-либо дочерние классы выполняли код в своих соответствующих методах Draw(), если для свойства Garbage базового класса установлено значение true. Я попытался сделать это со следующей реализацией:
Абстрактный базовый класс:
public virtual void Draw(GameTime GameTime, SpriteBatch SpriteBatch)
{
if (Garbage) return;
}
Унаследованный класс:
public void Draw(GameTime GameTime, SpriteBatch SpriteBatch, Color OverlayColor, float Scale)
{
base.Draw(GameTime, SpriteBatch);
//Other code here...
}
Поскольку метод Draw базового класса вызывается перед фактическим кодом в моем дочернем классе, он попадает в оператор return, который я хотел бы использовать в вызове Draw() моего дочернего класса. Однако этого не происходит.
Есть ли способ добиться желаемого эффекта, не добавляя, что «if (Garbage) return;» ограничение на верхнюю часть метода Draw() каждого унаследованного класса?