Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 尝试将对象序列化为XML_C#_Silverlight_Windows Phone 7_Xml Serialization - Fatal编程技术网

C# 尝试将对象序列化为XML

C# 尝试将对象序列化为XML,c#,silverlight,windows-phone-7,xml-serialization,C#,Silverlight,Windows Phone 7,Xml Serialization,使用WP7&C#: 我正在尝试将我的对象转换为XML,以便将该文件保存到SkyDrive。我尝试过很多例子,但运气不好。有了这个密码,我 public void ConvertObjectToXmlString() { System.IO.MemoryStream ms = new System.IO.MemoryStream(); System.Xml.Serialization.XmlSerializer xs = new S

使用WP7&C#:

我正在尝试将我的对象转换为XML,以便将该文件保存到SkyDrive。我尝试过很多例子,但运气不好。有了这个密码,我

 public void ConvertObjectToXmlString()
        {
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(App.ViewModel.vehicleItemsCollection.GetType());
            System.Xml.XmlWriter xtw = System.Xml.XmlWriter.Create(ms);
            //System.Xml.XmlTextWriter xtw = new System.Xml.XmlTextWriter(ms, System.Text.Encoding.UTF8);

            xs.Serialize(xtw, App.ViewModel.vehicleItemsCollection[0]);

            MessageBox.Show(xtw.ToString());
        }
错误在这一行:
xs.Serialize(xtw,App.ViewModel.vehicleItemsCollection[0])
我有一个集合,在我的测试中只有一个项目。然而,我可以想象,当我最终发布这段代码时,我不会设置索引[0]

错误状态为: 生成XML文档时出错

当我进一步查看错误消息时,我会看到以下内容: 无法将OilChangeApplication.vehicle类型的对象分配给System.Collections.ObjectModel.ObservableCollection`1[[OilChangeApplication.vehicle,OilChangeApplication,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null]]类型的对象。


vehicleItemsCollection是一个车辆的集合。。。我需要做些什么才能得到一些XML,这样我就可以上传它了?

我猜你正在序列化收集的项目。要序列化所有需要传递的集合,请执行以下操作:

xs.Serialize(xtw, App.ViewModel.vehicleItemsCollection);
澄清。据此:

XmlSerializer(App.ViewModel.vehicleItemsCollection.GetType());
指定序列化程序可以序列化以下类型的对象:

ObservableCollection<OilChangeApplication.vehicle>
现在,您可以仅序列化一个对象:

xs.Serialize(xtw, App.ViewModel.vehicleItemsCollection[0]);

我猜您正在序列化集合的项。要序列化所有需要传递的集合,请执行以下操作:

xs.Serialize(xtw, App.ViewModel.vehicleItemsCollection);
澄清。据此:

XmlSerializer(App.ViewModel.vehicleItemsCollection.GetType());
指定序列化程序可以序列化以下类型的对象:

ObservableCollection<OilChangeApplication.vehicle>
现在,您可以仅序列化一个对象:

xs.Serialize(xtw, App.ViewModel.vehicleItemsCollection[0]);

这个错误看起来非常明显,只是从编译器的角度稍微翻译了一下: 无法将类型为“OilChangeApplication.vehicle”的对象分配给类型为“OilChangeCollection”的对象

这意味着您对集合的索引导致了错误,如下所示:

xs.Serialize(xtw, App.ViewModel.vehicleItemsCollection[0]);
因为没有像您在本部分中告诉序列化程序的那样传递
ObservableCollection
newXMLSerializer(App.ViewModel.vehicleItemsCollection.GetType()),您正在传递模型类的实例

因此,您可以删除
[0]
或更改传递给序列化程序的类型,错误将消失

xs.Serialize(xtw, App.ViewModel.vehicleItemsCollection);


这个错误看起来非常明显,只是从编译器的角度稍微翻译了一下: 无法将类型为“OilChangeApplication.vehicle”的对象分配给类型为“OilChangeCollection”的对象

这意味着您对集合的索引导致了错误,如下所示:

xs.Serialize(xtw, App.ViewModel.vehicleItemsCollection[0]);
因为没有像您在本部分中告诉序列化程序的那样传递
ObservableCollection
newXMLSerializer(App.ViewModel.vehicleItemsCollection.GetType()),您正在传递模型类的实例

因此,您可以删除
[0]
或更改传递给序列化程序的类型,错误将消失

xs.Serialize(xtw, App.ViewModel.vehicleItemsCollection);


您的车型是什么样子的?如果内存可用,则需要在模型中做一点元数据标记,以便序列化程序知道如何处理对象类型。是否引用属性?现在它没有了。@Dillie-O我想你说的是在模型类定义中添加
[XmlSerializable]
(又称XmlSerializableAttribute)。这很有用,但不是导致此错误的原因。@jv42-DOH!你说得对。谢谢你的关注。你的汽车项目模型是什么样子的?如果内存可用,则需要在模型中做一点元数据标记,以便序列化程序知道如何处理对象类型。是否引用属性?现在它没有了。@Dillie-O我想你说的是在模型类定义中添加
[XmlSerializable]
(又称XmlSerializableAttribute)。这很有用,但不是导致此错误的原因。@jv42-DOH!你说得对。谢谢你的帮助。