有一点问题.我有一个程序,可以构建一个可观察的用户集合.用户有名字,姓氏和图像.我可以将用户添加到observable集合中,但我也想保存集合并在每次重新打开程序时加载它.
我的问题是,虽然保存名字和姓氏相当容易,但编写者无法将图像写入xml文件.有没有办法解决?
这是我到目前为止所拥有的:
可观察的集合:
ObservableCollection<VendorClass> ProfileList = new ObservableCollection<VendorClass>();
Run Code Online (Sandbox Code Playgroud)
有问题的作家:
XmlSerializer xs = new XmlSerializer(typeof(ObservableCollection<VendorClass>));
using (StreamWriter wr = new StreamWriter("vendors.xml")) //Data/customers.xml
{
xs.Serialize(wr, ProfileList);
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?如果确实存在写入图像的解决方案,是否有可行的方法再次读出它?
对不起,这个问题似乎很愚蠢.我已经研究了一些关于这个主题的网页,但我不确定它们对我的问题有多重要.我有一个2D地图设计师.我想保存地图,以便我可以加载它并在其上玩游戏.我对序列化很新,我想知道我应该研究哪些文档,以及是否有人可以指向一些与我的序列化任务相关的网页.这是数据结构:
public class ModelMap
{
public ModelMap()
{
this.cellBgImage = new Image();
this.exitImage = new Image();
this.theseus = new Image();
this.minotaur = new Image();
}
public int rows { get; set; }
public int cols { get; set; }
public int boardXPos { get; set; }
public int boardYPos { get; set; }
public int myCellSize { get; set; }
public Image cellBgImage { get; set; }
public string HorizontalWallSource { get; set; }
public string VerticalWallSource { get; set; …Run Code Online (Sandbox Code Playgroud) 我正在运行桌面应用程序,当我到达此行时:
serializer.Serialize(new StringWriter(sb), value);
Run Code Online (Sandbox Code Playgroud)
它抛出以下错误:
There was an error generating the XML document.
Run Code Online (Sandbox Code Playgroud)
这是代码:
public static string Serialize(object value)
{
var serializer = new XmlSerializer(value.GetType());
var sb = new StringBuilder();
serializer.Serialize(new StringWriter(sb), value);
return sb.ToString();
}
Run Code Online (Sandbox Code Playgroud)
当我调试时,我在Watch部分看到了这个:
value.GetType().IsSerializable true bool
Run Code Online (Sandbox Code Playgroud)
我在声明值的类之前设置它:
[Serializable]
Run Code Online (Sandbox Code Playgroud)
先感谢您.
例外细节
System.InvalidOperationException was unhandled by user code
Message="There was an error generating the XML document."
Source="System.Xml"
StackTrace:
at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
at System.Xml.Serialization.XmlSerializer.Serialize(TextWriter textWriter, Object o, XmlSerializerNamespaces namespaces) …Run Code Online (Sandbox Code Playgroud)