- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
所以我用基类 DisplayObject
设置了这个系统。它有一个 Render
方法和一个其他 DisplayObjects
的列表作为它的 child 。它还包含有关各种矩阵变换的数据,但我不包含有关实际绘图的数据。这就是为什么 Render
方法是虚拟的。
然后我有 2 节课。 ColoredShape
和 TexturedShape
均继承自 DisplayObject
并使用以
Render
方法
base.Render();
然后做绘图代码。
我现在想要的是在对象的所有子对象上调用Render
,在父对象的 Render 完成后。所以这是我的问题。如果我这样做
foreach (var child in Children) child.Render();
在 DisplayObject
类的 Render
方法末尾,它将在覆盖之前执行,因为它是 base.Render( )
调用,如果我将该代码放在子类中,则 DisplayObject
会单独失去该功能,并且它会强制从它继承的所有 future 子类手动实现该功能。
最佳答案
你要的是抽象方法模式。换句话说,不要让你的 render 方法 virtual crate 另一个渲染调用的方法(虚拟的或抽象的)。所以 render 看起来像这样:
public void Render()
{
DoRender()
foreach (var child in _children)
{
child.Render();
}
}
protected virtual void DoRender()
{
}
关于c# - 在虚方法的所有覆盖之后执行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8023868/
我有一个特别的问题想要解决,我不确定是否可行,因为我找不到任何信息或正在完成的示例。基本上,我有: class ParentObject {}; class DerivedObject : publi
在我们的项目中,我们配置了虚 URL,以便用户可以在地址栏中输入虚 URL,这会将他们重定向到原始 URL。 例如: 如果用户输入'http://www.abc.com/partner ',它会将它们
我是一名优秀的程序员,十分优秀!