【发布时间】:2013-12-28 02:23:54
【问题描述】:
我有一个保存某些数据的类(用于游戏编辑器),为了在我的程序中使用它,它必须继承类 System.Windows.Controls.Image。
类如下所示:
public class GameObjectInstance : Image
{
public string InstanceName { get; set; }
public string ObjectX { get; set; }
public string ObjectY { get; set; }
...
}
Image 必须被继承,因为我必须在 Canvas 上绘制 GameObjectInstance 才能显示图像,但我还必须保留特定的 GameObjectInstance 数据。
我的程序必须将一些GameObjectInstance 类保存到某处的文件中。
我试图通过序列化来做到这一点,我发现XmlSerializer 不支持这个。我也尝试过使用BinaryFormatter 进行序列化,但这也不起作用。
如何进行序列化以便忽略继承的属性(我不需要保存它们的数据)?
【问题讨论】:
-
是编辑器使用的数据模型,还是ui使用的ui模型?如果两者兼而有之,那么可能是时候重新考虑模型-视图分离线了。
-
两者兼而有之,但我不知道如何将它们分开。因为我需要在 UI 中显示所有这些数据,但我仍然需要在那里存储数据。尽管到目前为止,我的编辑器几乎可以完美地处理我的所有设置。
-
也许我可以
GameObjectInstanceView继承Image并拥有GameObjectInstance的属性? -
通常,您会创建一个不关心演示的模型。然后,您将构建一个 UI,该 UI 采用模型并将模型呈现到屏幕上。该模型对 UI 一无所知。
-
我已经做到了。唯一的例外是
GameObjectInstance类。
标签: c# wpf inheritance serialization