当前位置: 首页 > 编程语言 > C#

如何使用protobuf-net或其他序列化器序列化第三方类型?Share

时间:2023-04-10 15:30:32 C#

如何使用protobuf-net或其他序列化器序列化3rd方类型?我有List但protobuf-net给我错误,它没有合同。当我没有来源时,如何为其指定合同?它实际上说它无法推断类型,但我认为这是因为我没有使用它的属性,对吧?默认的二进制序列化程序也会抱怨,因为该类型未标记为可序列化。编辑:错误信息是:Typeisnotexpected,andnocontractcanbeinferred:HtmlAgilityPack.HtmlNode坦率地说,在HTML的情况下,我只是存储...html-它是一种预序列化!但是,要回答这个问题:在protobuf-netv2中,您可以在运行时配置TypeModel,这允许您通过属性和其他一些技巧来完成这一切(在v2属性中,如果您没有指定任何其他内容,则只会帮助引导模型).因为您可以在运行时完成所有这些操作,所以您无需更改类型-因此它可以应用于您无法控制的模型。默认模型实例是RuntimeTypeModel.Default,您可以将类型添加到模型并单独配置每个MetaType(映射到Type)。这允许您告诉它要应用哪些成员(属性/字段)、子类型、回调等。如果这太复杂,您还可以指定一个“代理”,它允许您配置一个简单的DTO,并使用标准转换运算符(显式或隐式)在复杂模型和简单DTO模型之间进行转换。有关信息,默认模型的重要性:这是Serializer.*使用的。但是,如果您使用TypeModel实例来执行序列化/反序列化,您可以为同一类型拥有多个不同配置的模型。我不记得HTML-agility-pack的全部细节,但这些是protobuf-net为您的场景提供的主要选项。对于BSon,你可以为任何类指定你自己的序列化器;请参阅http://www.mongodb.org/display/DOCS/CSharp+Driver+Serialization+Tutorial#CSharpDriverSerializationTutorial-Writeacustomserializer,这是使用它序列化C#动态变量示例的示例。以上是C#学习教程:Howtoserializethird-partytypesusingprotobuf-netorotherserializers?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: