我需要一组键和值(如字典),但需要使用Soapformatter进行序列化。
为什么要使用soapformatter?
我不知道必须序列化的类型,我只知道该类型实现的接口。
有没有人知道如何破解这个坚果?
答案 0 :(得分:1)
显然,只需继承Hashtable并添加以下构造函数:
[Serializable]
public class StateContainer : Hashtable, IStateContainer
{
public StateContainer() : base() { }
public StateContainer(SerializationInfo info, StreamingContext context) : base(info, context) { }
}
我花了半天的时间才想出来......
然后你可以像这样序列化这个类:
XmlDocument xmlDocument = null;
using (MemoryStream memData = new MemoryStream())
{
SoapFormatter formatter = new SoapFormatter();
formatter.Serialize(memData, state);
memData.Flush();
memData.Position = 0;
xmlDocument = new XmlDocument();
xmlDocument.Load(memData);
}
并按照以下方式反序列化:
IStateContainer response = null;
using (MemoryStream memData = new MemoryStream())
{
using (StreamWriter writer = new StreamWriter(memData))
{
writer.Write(state.stateobject);
writer.Flush();
memData.Flush();
SoapFormatter formatter = new SoapFormatter();
memData.Position = 0;
response = (IStateContainer)formatter.Deserialize(memData);
}
}
希望有一天这可以帮助其他人: - )