Ho un C# classe che è serializzato su disco dal BinaryFormatter, come ad esempio questo esempio:Come rifattorizziamo una classe che è serializzato nel .NET?
// 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;
}
Più tardi, voglio refactoring questa classe da uno o più dei seguenti
- cambiare il suo nome
- Cambiare il suo spazio dei nomi
- Spostarsi in un'altra assemblea
per quanto posso dire, il file binario può essere de-serializzato solo se una classe con lo stesso nome, spazio dei nomi e il montaggio nome è disponibile.
Come posso aggirare questo?
E 'possibile mappare la de-serializzazione a un diverso nome di classe, spazio dei nomi e il montaggio senza rompere Version Tolerant Serialization?
Quindi vuol dire persona dovrebbe attuare ISerializable e GetObjectData()? Come sarà il de-serializzatore sapere che questa classe esatto persona dovrebbe essere utilizzato, quando ha un nome diverso, dello spazio dei nomi e/o montaggio? Posso in qualche modo dire al de-serializer quale classe usare? – angularsen