繁体   English   中英

在protobuf-net中使用代理例外

[英]Exception by using a surrogate in protobuf-net

我有一个其中具有嵌套列表的DataCollection类。 我正在尝试使用替代类,将List>填充到列表中,并替代Dto类本身。

我正在创建一个RuntimeTypeModel

_model = TypeModel.Create();
_model.Add(typeof(DataCollection), false).SetSurrogate(typeof(DataCollectionSurrogate));
_model.Compile();`

如果我编译模型,则会收到以下异常。

System.ArgumentExceptionRepeated data (a list, collection, etc) has inbuilt behaviour and cannot use a surrogate

这到底传达了什么? 类本身有一些方法吗? 在其他情况下,这似乎无关紧要。 我不明白该传达的信息。

有什么想法吗?

基本上,物品的集合在许多内部结构上与物品非常不同。 该库允许您使用替代品的项目,但不允许你使用任何东西替代品,它是治疗对象的列表/集合...这对于protobuf网手段的目的:

  • 满足foreach要求(通常但不一定通过实现IEnumerable[<T>]
  • 具有合适的Add(T)方法来附加项目
  • 可以确定(或明确指定)满足上述条件的一些T
  • 没有明确标记为SkipListHandling

如果您的类型不应该像列表一样工作,则在[ProtoContract]上设置SkipListHandling ...,但是: 如果这样做,不要指望它像列表一样工作。 它将仅被视为项目。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM