C# 如何序列化WP7应用程序中的委托
我正在为WP7构建一个应用程序。我正在处理我的应用程序的墓碑部分 我有这样一门课C# 如何序列化WP7应用程序中的委托,c#,.net,windows-phone-7,serialization,persistence,C#,.net,Windows Phone 7,Serialization,Persistence,我正在为WP7构建一个应用程序。我正在处理我的应用程序的墓碑部分 我有这样一门课 namespace packetq{ public class Packet{ int x; //some other information; } } namespace packetq{ public class PacketState{ Packet A; func<Packet,Packet> ha
namespace packetq{
public class Packet{
int x;
//some other information;
}
}
namespace packetq{
public class PacketState{
Packet A;
func<Packet,Packet> handler;
}
}
namespace packetq{
公共类数据包{
int x;
//其他一些信息;
}
}
名称空间包{
公共类PacketState{
包A;
func处理器;
}
}
现在我有了一个类,它实例化数据包对象并为其分配一个处理程序
当我的申请被删除时。我需要存储这个PacketState对象,这样当我将它还原回来时,我应该能够处理该数据包,并且应该能够使用该处理程序处理该数据包
因此,我需要序列化并持久化该处理程序
我读了几篇文章,其中提到可以使用表达式树实现持久化和序列化。但这样做真的很麻烦
请建议其他方法。由于BinaryFormatter不可用,我的建议是:使用类实例(公共基类型的子类)和多态方法,可能使用装饰器模式。我不知道您计划使用哪个序列化程序,但只要子类型事先已知,大多数序列化程序都可以处理继承 因此,您可能有一个
PacketHandler
基类,而不是Func
,该基类具有一个接受并返回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]声明。谢谢Marc。我正在使用DataContract序列化程序。你能详细说明你的答案吗?我从中得不到什么。