C# 当其中一种类型发生更改时,如何转换类型化数据集方案?

C# 当其中一种类型发生更改时,如何转换类型化数据集方案?,c#,ado.net,dataset,C#,Ado.net,Dataset,我得到了一个类型化的(未连接的)数据集,并用该数据集创建了许多记录(二进制序列化)。 我在其中一个类型中添加了一个属性,我想用新数据集转换旧记录。 我知道如何加载它们:使用旧模式dll为BinaryFormatter提供自定义绑定。 问题是如何将旧类型的对象转换为新类型的对象-这两种类型具有相同的名称,但新类型又有一个属性。能否使新类继承旧类?如果是这样的话,也许你可以通过铸造简单地反序列化到新的 如果没有,另一种可能的解决方案是实现批处理操作,其中包括对不同名称空间中的旧类和新类的引用,对旧对

我得到了一个类型化的(未连接的)数据集,并用该数据集创建了许多记录(二进制序列化)。 我在其中一个类型中添加了一个属性,我想用新数据集转换旧记录。 我知道如何加载它们:使用旧模式dll为BinaryFormatter提供自定义绑定。
问题是如何将旧类型的对象转换为新类型的对象-这两种类型具有相同的名称,但新类型又有一个属性。

能否使新类继承旧类?如果是这样的话,也许你可以通过铸造简单地反序列化到新的


如果没有,另一种可能的解决方案是实现批处理操作,其中包括对不同名称空间中的旧类和新类的引用,对旧对象进行水合物化,对新类的对象执行深度复制,并序列化新对象。

如果现有数据集和新数据集之间的唯一区别是添加了字段,则可以通过将旧数据集写入XML,然后将其读入新数据集来“升级”它们。添加字段的值将为DBNull

MyDataSet myDS = new MyDataSet();
MyDataSet.MyTableRow row1 = myDS.MyTable.NewMyTableRow();
row1.Name = "Brownie";
myDS.MyTable.Rows.Add(row1);

MyNewDataSet myNewDS = new MyNewDataSet();

using(MemoryStream ms = new MemoryStream()){
    myDS.WriteXml(ms);
    ms.Position = 0;
    myNewDS.ReadXml(ms);
}