【发布时间】:2018-12-19 15:29:16
【问题描述】:
我有一门课
[Serializable]
public class Car
{
public Driver Driver = new Driver();
public List<Driver> Drivers = new List<Driver>();
}
[Serializable]
public class Driver
{
public int Id { get; set; }
}
当我尝试序列化此类的实例然后转换为 DataSet 时,我得到了一个非常奇怪的行为:
void Main()
{
var x = new Car();
x.Drivers.Add(new Driver { Id = 1 });
var dataSet= AsDataSet(x);
dataSet.Tables["Driver"].Rows.Count;//2!! and two columns: Id and Driver_Id
dataSet.Tables["Drivers"].Rows.Count;//1 and only one column Driver_Id
}
static DataSet AsDataSet(Car ceInv)
{
var serializer = new XmlSerializer(ceInv.GetType());
var ms = new MemoryStream();
serializer.Serialize(ms, ceInv);
ms.Position = 0;
var ds = new DataSet();
ds.ReadXml(ms);
return ds;
}
有人能告诉我为什么表 Drivers 是空的并且没有列 Id 吗? 不幸的是,属性 Driver 应该保持这样(遗留代码)。我只能更改属性驱动程序。 更改属性 Drivers 的名称对结果没有影响。
【问题讨论】:
-
试图运行它,但没有
Dump()的定义 -
从用法中推断出
Dump()应该是什么样子。现在调查一下 -
对不起,这是来自 linqpad 的功能。我会更正代码
标签: c# serialization dataset