Я создаю среду C #, в которой (почти) все мои классы будут основаны на одном абстрактном базовом классе. Этот базовый класс содержит некоторые частные свойства, одним из которых является логическое значение Garbage .
В цикле рисования 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 () каждого унаследованного класса?