Създавам 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() на моя дъщерен клас. Това обаче не се случва.
Има ли някакъв начин да постигна ефекта, който искам, без да добавям, че "ако (Гарбадж) се върне;" ограничение до върха на метода Draw() на всеки наследен клас?