gpt4 book ai didi

c# - 更改类的命名空间后无法使用 binaryFormatter 反序列化

转载 作者:太空狗 更新时间:2023-10-29 18:20:27 24 4
gpt4 key购买 nike

更改类的命名空间后,我无法再反序列化对象。我已经实现了 SerializationBinder。示例:

public class TypeNameConverter : SerializationBinder
{
public override Type BindToType(string assemblyName, string typeName)
{
typeName = typeName.Replace("MyOldNamespace", "MyNewNamespace");
return Type.GetType(string.Format("{0}, {1}", typeName, assemblyName));
}
}

BinaryFormatter bf = new BinaryFormatter();
bf.Binder = new TypeNameConverter();

我得到的异常是:

'System.Runtime.Serialization.TypeLoadExceptionHolder' cannot be converted to type 'MyNewNamespace.MyClass'

最佳答案

您忘记替换程序集名称:

class TypeNameConverter : SerializationBinder
{
public override Type BindToType(string assemblyName, string typeName)
{
typeName = typeName.Replace("MyOldNamespace", "MyNewNamespace");
assemblyName = assemblyName.Replace("MyOldNamespace", "MyNewNamespace");
return Type.GetType(string.Format("{0}, {1}", typeName, assemblyName));
}
}

关于c# - 更改类的命名空间后无法使用 binaryFormatter 反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12737602/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com