反序列化不兼容的BinaryFormatter数据可以通过以下步骤进行:
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
[Serializable]
public class MyData
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime Date { get; set; }
}
public static object DeserializeBinaryFormatterData(byte[] data)
{
using (var ms = new MemoryStream(data))
{
var formatter = new BinaryFormatter();
return formatter.Deserialize(ms);
}
}
public static MyData ConvertToMyData(object data)
{
var myData = new MyData();
var properties = data.GetType().GetProperties();
foreach (var property in properties)
{
var value = property.GetValue(data);
var myDataProperty = myData.GetType().GetProperty(property.Name);
if (myDataProperty != null && myDataProperty.CanWrite)
{
myDataProperty.SetValue(myData, value);
}
}
return myData;
}
var binaryFormatterData = // 从文件或其他来源获取原始BinaryFormatter数据
var deserializedData = DeserializeBinaryFormatterData(binaryFormatterData);
var myData = ConvertToMyData(deserializedData);
通过以上步骤,可以将不兼容的BinaryFormatter数据转换为新的类实例,并进行进一步处理。
云+社区沙龙online第5期[架构演进]
【BEST最优解】企业应用实践 消费医疗专场
GAME-TECH
GAME-TECH
DBTalk
DB TALK 技术分享会
DBTalk
DBTalk
云+社区技术沙龙[第20期]
领取专属 10元无门槛券
手把手带您无忧上云