Как реорганизовать класс, сериализованный в .NET?

У меня есть класс C #, который сериализуется на диск с помощью BinaryFormatter , например, в следующем примере:

// Version 3.0
[Serializable]
public class Person
{
    public string FullName;

    [OptionalField(VersionAdded=2)]
    public string NickName;
    [OptionalField(VersionAdded=2)]
    public DateTime BirthDate;

    [OptionalField(VersionAdded=3)]
    public int Weight;
}

Позже я хочу провести рефакторинг этого класса одним или несколькими из следующее
- Измените его имя
- Измените его пространство имен
- Перейти к другой сборке

Насколько я могу судить, двоичный файл может быть десериализован только при наличии класса с точно таким же именем, пространством имен и именем сборки.

Как мне обойти это?
Можно ли сопоставить десериализацию с другим именем класса, пространством имен и сборкой без прерывания Версия Допустимая сериализация ?

7
задан angularsen 23 August 2010 в 07:37
поделиться

1 ответ

Вы можете реализовать интерфейс ISerializable и переопределить GetObjectData для обеспечения собственной десериализации. Я не пробовал, но вы должны быть в состоянии десериализовать ваш старый объект "вручную".

1
ответ дан 7 December 2019 в 09:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: