【发布时间】:2015-12-04 15:00:48
【问题描述】:
我在我的 4X 游戏中声明了一个ISpaceObject 接口。
我还声明了实现该接口的抽象 Vehicle 和 StellarObject 类。
这些抽象类中的每一个都有继承自它的子类(例如,Ship、Base、Fighter 对应于Vehicl 和Planet、Star、Storm 对应于StellarObject)。
我希望能够为每种类型的对象显示图标和肖像图片。
我已经在各个类中实现了图形代码(例如 Icon 属性),但它是特定于 WinForms 的,我想为我的应用编写一个 WPF 端口。
我不想在我的每个班级都有WinFormsIcon、WpfIcon 等属性;这有点傻,而且我敢肯定一开始就把 WinForms 代码放在那里是个错误。
如何在不使用如下代码的情况下执行类似这样的并行行为:
if (o is Ship)
// get ship graphic
else if (o is Base)
// get base graphic
else if (o is Fighter)
// get fighter graphic
等等?
【问题讨论】:
-
ISpaceObject 接口的 Icon 属性是不是一部分?
-
你能提供一些你的类型的代码吗?
-
对不起,我没有得到你想要的。您不想将代码移植到 wpf,而是想在 Windows 窗体中保持原样?
-
我认为这类问题的常见模式是 Traits stackoverflow.com/questions/10729230
-
@ekolis 您能否展示一下到目前为止您在课堂上是如何管理 WinFormsIcon 的?这将有助于了解当前情况并为您提供解决方案。
标签: c# .net wpf oop design-patterns