我正在尝试使用 ServiceStack.Text 库将一些记录序列化为 CSV。
我正在使用继承,特别是抽象类,并且没有输出子类型的属性。是的,我知道这是一个坏主意,但因为我不需要反序列化类型,而且我没有制作公共 API。无论如何,文档似乎支持这种情况。
对于这个例子:
public abstract class ResultBase
{
public int MinuteOffset { get; set; }
public double SegmentDuration { get; set; }
}
public class EventIndex : IndexBase
{
public int EventsTotal { get; set; }
public int EventsTotalThresholded { get; set; }
}
以及要序列化的代码:
var destination = new FileInfo("C:\\somefile.txt")
using (var stream = destination.CreateText())
{
JsvStringSerializer s = new JsvStringSerializer();
var o = s.SerializeToString(results);
stream.Write(o);
CsvSerializer.SerializeToWriter(results, stream);
}
CSV 序列化器输出这个(不是我想要的):
MinuteOffset,SegmentDuration
0,0
但是,JSV 序列化程序似乎表现得如预期:
[{__type:"AnalysisBase.EventIndex, AnalysisBase",EventsTotal:0,EventsTotalThresholded:0,MinuteOffset:0,SegmentDuration:0}]
为什么字段输出存在差异,无论如何我可以让 CSV 序列化器输出所有子属性吗?