如何使用 soapformatter 序列化键:字符串、值:对象的集合

本文关键字:对象 集合 字符串 soapformatter 序列化 何使用 | 更新日期: 2023-09-27 17:57:03

我需要键和值的集合(如字典),但它需要使用 Soapformatter 进行序列化。

为什么选择肥皂成型机?
我不知道必须序列化的类型,我只知道类型实现的接口。

有谁知道如何破解这个坚果?

如何使用 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);
    }
}

希望有一天这可以帮助其他人:-)