在一个工具项目中,我为 Unity3D 资产生成元文件。由于所有统一资产元都从相同的属性开始,我创建了一个基本类型:
public class MetaBase {
public int fileFormatVersion { get; set; }
public Guid guid { get; set; }
public long timeCreated { get; set; }
public string licenseType { get; set; }
}
序列化从MetaBase继承的类型的实例会生成 unity 接受的文件,但 fileFormatVersion、guid、timeCreated 和 licenseType 写在文件的底部,而 Unity 将它们写在顶部。正如我所说,它可以工作,但是每当 Unity 决定覆盖元文件时,它都会产生一些需要在我的项目存储库中提交的差异,如果可能的话,我宁愿避免这种情况。
所以,我的第一个想法(升级到 YamlDotNet 4.0.0 之后)是添加一个TypeInspectorSkeleton,它会根据属性的声明类型对 _IPropertyDescriptor_s 进行排序。但是IPropertyDescriptor不提供对实际Property的访问,也不提供对其baseDescriptor属性的访问(对于PropertyDescriptor / OverridePropertyDescriptor)。
不应该有某种方法来访问 Property owner 类型吗?或者也许有更好的方法来实现我想要做的事情?