如何使用soapformatter序列化key:string,value:object的集合

时间:2011-05-18 09:29:00

标签: c# dictionary soapformatter

我需要一组键和值(如字典),但需要使用Soapformatter进行序列化。

为什么要使用soapformatter?
我不知道必须序列化的类型,我只知道该类型实现的接口。

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

1 个答案:

答案 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);
    }
}

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