0

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

例如

class Base {
}

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

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

谢谢

4

1 回答 1

0

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

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>(...);

我在这里整理了一个工作小提琴

于 2015-10-12T14:49:52.983 回答