Tôi có lớp nàyChiến lược deserializing một lớp học mà đã thay đổi trong .NET
[Serializable]
public class myClass() : ISerializable
{
public int a;
public int b;
public int c;
public void GetObjectData(SerializationInfo info,
StreamingContext context)
{
// Some code
}
public myClass(SerializationInfo info,
StreamingContext context)
{
// Some code
}
}
Tôi có hàng trăm những đối tượng trong cơ sở dữ liệu của tôi. Tôi bây giờ đã sẵn sàng để xuất bản một phiên bản mới của ứng dụng của tôi, nơi lớp đã morphed để
[Serializable]
public class myClass() : ISerializable
{
public int a;
public string b;
public int c;
public bool d;
public void GetObjectData(SerializationInfo info,
StreamingContext context)
{
// Some code
}
public myClass(SerializationInfo info,
StreamingContext context)
{
// Some code
}
}
Làm thế nào người ta sẽ deserialize một đối tượng đăng dựa trên phiên bản đầu tiên với các nhà xây dựng de-serialization của thứ hai.
Có các chiến lược cho phiên bản tương lai kiểm chứng phiên bản thứ hai của lớp không?
Thực hiện một chương trình chuyển đổi mà đọc đối tượng của kiểu đầu tiên, tạo ra các đối tượng của kiểu thứ hai và thay thế các đối tượng cũ bằng mới. Chạy chương trình đó sẽ mất nhiều thời gian, nếu bạn đang nói về hàng trăm, không phải hàng triệu hồ sơ. – dasblinkenlight
Có một bài viết chuyên về MSDN về nó. Bắt đầu tốt hơn ở đó: http://msdn.microsoft.com/en-US/library/ms229752%28v=vs.90%29.aspx –