如何在我的WP7应用程序中序列化委托
本文关键字:序列化 应用程序 WP7 我的 | 更新日期: 2023-09-27 18:22:41
我正在为WP7构建一个应用程序。我正在处理我申请中的墓碑部分。
我有一门课,
namespace packetq{
public class Packet{
int x;
//some other information;
}
}
namespace packetq{
public class PacketState{
Packet A;
func<Packet,Packet> handler;
}
}
现在我有一个类,它实例化Packet对象并为其分配一个处理程序
当我的申请被删除时。我需要存储这个PacketState对象,这样当我将其恢复时,我应该能够处理该数据包,并且我应该能够使用该处理程序处理该数据集。
因此,我需要序列化并持久化该处理程序。
我读过几篇文章,它说持久性和序列化可以使用表达式树来完成。但这种方式真的很麻烦。
请建议其他方法。
由于BinaryFormatter不可用,我的建议是:使用类实例(公共基类型的子类)和多态方法,也许使用装饰器模式。我不知道您打算使用哪种序列化程序,但只要预先知道子类型,大多数都可以处理继承。
因此,您可能有一个PacketHandler
基类,它带有一个接受并返回Packet
的虚拟方法,而不是Func<Packet,Packet>
详细说明:
[DataContract, KnownType(typeof(EchoPacketHandler)]
public class PacketHandler {
public virtual Packet Handle(Packet packet) { throw new NotSupportedException(); }
}
[DataContract]
public class EchoPacketHandler : PacketHandler {
public override Packet Handle(Packet packet) { return packet; }
}
但是添加更多的子类,并根据需要通过[DataMember]进行声明。