C# 我应该使用什么设计模式来支持不同的行为;平行;到类层次结构?
我在我的4X游戏中声明了一个C# 我应该使用什么设计模式来支持不同的行为;平行;到类层次结构?,c#,.net,wpf,oop,design-patterns,C#,.net,Wpf,Oop,Design Patterns,我在我的4X游戏中声明了一个ISpaceObject接口 我还声明了实现该接口的抽象Vehicle和StellarObject类 每个抽象类都有继承自它的子类(例如飞船,基地,战机用于飞行器,行星,恒星,风暴用于恒星天体) 我想能够显示图标和肖像图片为每种类型的对象 我已经在各个类中实现了图形代码(例如图标属性),但它是WinForms特有的,我想为我的应用程序编写一个WPF端口 我不想在我的每个类中都有WinFormsIcon,WpfIcon等属性;这有点傻,我敢肯定,首先把WinForms代
ISpaceObject
接口
我还声明了实现该接口的抽象Vehicle
和StellarObject
类
每个抽象类都有继承自它的子类(例如飞船
,基地
,战机
用于飞行器
,行星
,恒星
,风暴
用于恒星天体
)
我想能够显示图标和肖像图片为每种类型的对象
我已经在各个类中实现了图形代码(例如图标
属性),但它是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
etc?您可以将属性改为
字符串IconName
此名称可以指向资源程序集中的嵌入式资源
或者您可以使用将
位图
(我假设这是您在WinForms项目中拥有的)转换为ImageSource。是ISpaceObject接口的图标属性部分吗?您可以为您的类型提供一些代码吗?抱歉,我没有得到您想要的。您不想将代码移植到wpf,而是想保持Windows窗体中的状态?我认为这类问题的常见模式是Traits@ekolis您能展示一下到目前为止您是如何在任何类中管理WinFormsIcon的吗?这将有助于了解当前的情况并为您提供解决方案。嗯,System.Windows.Interop.Imaging听起来是最简单的解决方案,尽管感觉有些不对劲!我不能使用IconName,因为其中一些图像是动态绘制的。