0

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

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

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

4

1 回答 1

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

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

于 2011-05-18T09:44:10.357 回答