【发布时间】:2009-08-29 21:41:22
【问题描述】:
我正在做一个手指练习,并尝试编写一个应用程序,让我的电脑和 Windows 手机通过蓝牙槽串行端口进行通信。
现在我遇到了对象序列化的障碍。 .Net Compact Framework 不支持二进制序列化,所以我选择 XmlSerialization。我写了一个有两个类的库。一个应该能够包含其他类的 ObjectCarrier,这样我就可以有一种通用的发送和接收方式。并有一个服装类 MusicAlbum。
整个设置在 pc 端完美运行。移动网站不断给我以下错误: System.InvalidOperationException:生成 XML 文档时出错。 ---> System.InvalidOperationException:类型 TransferObject.MusicAlbum 不是预期的。使用 XmlInclude 或 SoapInclude 属性指定静态未知的类型。
奇怪的是,如果我使用 ObjectCarrier 并将字符串或日期时间对象之类的东西放在 Payload 中,它可以在移动设备上运行。
我的 MusicAlbum 课程做错了什么?
---| MusicListing.cs |-------------
using System;
using System.Collections.Generic;
using System.Text;
namespace TransferObject
{
public class MusicAlbum
{
public string AlbumName { get; set; }
public string ArtistName { get; set; }
}
}
---| TransferObject.cs |-----------
using System;
using System.Xml.Serialization;
namespace TransferObject
{
[XmlInclude(typeof(MusicAlbum))]
public class ObjectCarrier
{
public Object PayloadObject { get; set; }
}
}
感谢您的建议。这帮助我了解我是如何做到的。通过使用抽象类,我不再需要载体了。
它不起作用的原因是我自己的错,它是 Windows 库而不是移动库。更改后,您的代码运行良好。据我现在测试的双方。如果有任何变化,我会更新这个。
【问题讨论】:
标签: c# serialization compact-framework xml-serialization