我有以下课程:
[Serializable] public class ExtendedAddressData { public String AddressLine1 { get; set; } public String AddressLine2 { get; set; } public String Country { get; set; } public String City { get; set; } public String Firstname { get; set; } public String Surname { get; set; } public String FakeField { get; set; } } [Serializable] public class AddressData { public String AddressLine1 { get; set; } public String AddressLine2 { get; set; } public String Country { get; set; } public String City { get; set; } public String ZipCode { get; set; } public String Firstname { get; set; } public String Surname { get; set; } }
我试图确保旧的AddressData在将来仍然可以反序列化,尽管序列化略有不同的类.
基本上应该清空空的(不存在的)字段,并且应该忘记那些被删除的字段.
我正在从Object到Byte [](以及后面)进行序列化.不是XML或JSON
private static byte[] ObjectToByteArray(object _Object) { try { var memoryStream = new MemoryStream(); new BinaryFormatter().Serialize(memoryStream,_Object); return memoryStream.ToArray(); } catch (Exception e) { Console.WriteLine("Exception caught in process: {0}",e); } return null; } private static object ByteArrayToObject(byte[] aBytes) { try { var memoryStream = new MemoryStream(aBytes); var serializedobject = new BinaryFormatter().Deserialize(memoryStream); return serializedobject; } catch (Exception e) { Console.WriteLine("Exception caught in process: {0}",e); } return null; }
这是一个简化的UnitTest,可能解释了我的尝试比我更好
public void LegacySerializationSupporttest() { var realData = new AddressData() { AddressLine1 = "AddressLine1",AddressLine2 = "AddressLine2",City = "City",Country = "Country",Firstname = "Firstname",Surname = "Surname",ZipCode = "ZipCode" }; var bytearray = AddressRepository_Accessor.ObjectToByteArray(realData); AddressData realObject = (AddressData) AddressRepository_Accessor.ByteArrayToObject(bytearray); ExtendedAddressData fakeObject = (ExtendedAddressData) AddressRepository_Accessor.ByteArrayToObject(bytearray); Assert.AreEqual(realObject.AddressLine1,fakeObject.AddressLine1); }
有什么方法可以做到这一点,仍然使用bytearray而不是JSON或XML?
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。