如何反序列化子类?

时间:2015-09-30 00:38:37

标签: yamldotnet

我有一个列表,其中包含相同基类但具有不同子类的项。我怎样才能反序化呢?

例如

class Base {
}

class Child: Base {
   int Property { get; set; }
}

class Ser {
   public List<Base> Values { get; set; }
}

由于

1 个答案:

答案 0 :(得分:0)

反序列化器无法自动推断出您期望的子类型。因此,您需要告诉它使用标记的孩子的类型。 E.g:

YAML

- !!child
  Property: 1

- !!child
  Property: 2

C#

var deserializer = new Deserializer();
deserializer.RegisterTagMapping("tag:yaml.org,2002:child", typeof(Child));

var items = deserializer.Deserialize<Ser>(...);

I have put together a working fiddle here