Wil*_*mas 2 c# inheritance xna return base
我正在创建一个C#框架,其中(几乎)我的所有类都将基于单个抽象基类.该基类包含一些私有设置属性,其中一个属性是布尔垃圾.
在XNA的绘制循环中,如果基类的Garbage属性设置为true ,我不希望任何子类在它们各自的Draw()方法中执行代码.我尝试使用以下实现执行此操作:
抽象基类:
public virtual void Draw(GameTime GameTime, SpriteBatch SpriteBatch)
{
if (Garbage) return;
}
Run Code Online (Sandbox Code Playgroud)
继承类:
public void Draw(GameTime GameTime, SpriteBatch SpriteBatch, Color OverlayColor, float Scale)
{
base.Draw(GameTime, SpriteBatch);
//Other code here...
}
Run Code Online (Sandbox Code Playgroud)
因为基类的Draw方法是在我的子类中的实际代码之前调用的,所以它命中了返回语句,我希望将其贯穿到我的子类的Draw()调用中.但是,这种情况并没有发生.
有没有办法达到我想要的效果,而不添加"if(Garbage)return;" 限制到每个继承类的Draw()方法的顶部?
您可能考虑的一件事是有两种方法.您可以在抽象基础上使用Draw方法,该方法不会被覆盖,然后定义一个名为PerformDraw()的抽象受保护方法,您的继承者会覆盖它.
抽象基础绘图看起来像:
public void Draw(GameTime GameTime, SpriteBatch SpriteBatch)
{
if (!Garbage) PerformDraw(GameTime, SpriteBatch);
}
Run Code Online (Sandbox Code Playgroud)
这允许您覆盖绘制行为,但强制所有继承者使用"垃圾"检查.
| 归档时间: |
|
| 查看次数: |
1686 次 |
| 最近记录: |