Невозможно десериализовать с помощью binaryFormatter после изменения пространства имен класса [duplicate]
На этот вопрос уже есть ответ:
дублированный идентификатор с фрагментом 3 ответа Можно ли восстановить объект, сериализованный через «BinaryFormatter», после изменения имен классов? 1 ответ После изменения пространства имен моего класса я больше не могу десериализовать объекты. Я реализовал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' нельзя преобразовать в тип 'MyNewNamespace.MyClass'