如何使用 soapformatter 序列化键:字符串、值:对象的集合
本文关键字:对象 集合 字符串 soapformatter 序列化 何使用 | 更新日期: 2023-09-27 17:57:03
我需要键和值的集合(如字典),但它需要使用 Soapformatter 进行序列化。
为什么选择肥皂成型机?
我不知道必须序列化的类型,我只知道类型实现的接口。
有谁知道如何破解这个坚果?
显然,
它所需要的只是从哈希表继承并添加以下构造函数:
[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);
}
}
希望有一天这可以帮助其他人:-)