YamlDotNet:根据继承深度对序列化属性进行排序

时间:2016-09-21 17:05:49

标签: c# yamldotnet

在工具项目中,我为Unity3D资产生成元文件。由于所有unity资产元素都以相同的属性开头,因此我创建了一个基本类型:

public class MetaBase { public int fileFormatVersion { get; set; } public Guid guid { get; set; } public long timeCreated { get; set; } public string licenseType { get; set; } }

序列化继承自 MetaBase 的类型的实例生成一个统一接受的文件,但fileFormatVersion,guid,timeCreated和licenseType写在文件的底部,而Unity将它们写在顶部。正如我所说,它可以工作,但是当Unity决定覆盖元文件时,它会产生一些需要在我的项目存储库中提交的差异,如果可能的话我宁愿避免这种差异。

所以,我的第一个想法(在升级到YamlDotNet 4.0.0之后)是添加 TypeInspectorSkeleton ,它将根据属性的声明类型对_IPropertyDescriptor_s进行排序。但 IPropertyDescriptor 不提供对实际 Property 的访问,也不提供对其 baseDescriptor 属性的访问(对于 PropertyDescriptor / OverridePropertyDescriptor )。

是否应该有某种方式来访问Property owner类型?或者也许有更好的可能实现我想要做的事情?

0 个答案:

没有答案