这可能出现什么问题:
public void Main()
{
var input = new StringReader(Document);
var deserializer = new Deserializer(namingConvention: new CamelCaseNamingConvention());
var p = deserializer.Deserialize<Person>(input);
Console.WriteLine(p.Name);
}
public class Person
{
public string Name {get;set;}
}
private const string Document = @"Name: Peter";
抛出序列化异常:
Property 'Name' not found on type 'YamlDotNet.Samples.DeserializeObjectGraph+Person'
如果我首先使用Serializer序列化Person对象,也会发生同样的情况。
虽然用于反序列化的在线示例工作正常 - 但这个简单的代码却没有。我错过了什么?它必须是一个愚蠢的小细节。 (但之前我尝试过其他数据结构。)
答案 0 :(得分:3)
看起来,问题在于namingConvention参数。如果我没有将它设置为CamelCaseNamingConvention的实例,那么一切都很好。
不幸的是&#34;规范&#34;示例(https://dotnetfiddle.net/HD2JXM)使用它,因此表明它很重要。
答案 1 :(得分:2)
出于任何原因,CamelCaseNamingConvention将字段中的字段转换为小写(即&#39; Name&#39; to name&#39; name&#39;)。因为字符串是&#39;名称&#39;而不是&#39; name&#39;反序列化失败。该示例使用小写,因此它有效.... 我有同样的问题......