Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何序列化一个类实现两个具有相同基接口的接口_C#_Serialization_Protobuf Net - Fatal编程技术网

C# 如何序列化一个类实现两个具有相同基接口的接口

C# 如何序列化一个类实现两个具有相同基接口的接口,c#,serialization,protobuf-net,C#,Serialization,Protobuf Net,我正在尝试使用ProtobufV2来序列化类a实现接口B和C,B和C都是从D派生的 将返回错误:类型只能参与一个继承层次结构。接口实际上与类继承的“派生”(继承)类型不同。虽然提供了基本的接口支持,但protobuf net目前并不支持这种情况 至于它是否能够支持它,这需要一些思考。我建议。@enzhou.liu重复一下。。。“这不是protobuf net目前支持的方案。至于它是否能够支持它,这需要一些思考。”。没有简单的机制可以做到这一点;这本质上是菱形问题。@MarcGravel是

我正在尝试使用ProtobufV2来序列化类a实现接口B和C,B和C都是从D派生的






将返回错误:类型只能参与一个继承层次结构。

接口实际上与类继承的“派生”(继承)类型不同。虽然提供了基本的接口支持,但protobuf net目前并不支持这种情况


至于它是否能够支持它,这需要一些思考。我建议。

@enzhou.liu重复一下。。。“这不是protobuf net目前支持的方案。至于它是否能够支持它,这需要一些思考。”。没有简单的机制可以做到这一点;这本质上是菱形问题。@MarcGravel是否仍然不支持从2个不同接口继承的类型?或者有什么突破吗?我在
C类中遇到了类似的问题:IA、IB
IA
IB
类型的两个属性。为什么不支持这一点?序列化或反序列化时,您知道是根据属性的类型查看类型表中的
IA
还是
IB
。此外,我还使用了
model.Add(typeof(IA),true).AddSubType(101,typeof(C))
model.Add(typeof(IB),true).AddSubType(101,typeof(C))
所以我想知道,如果存储的数字代码是相同的,那么属性类型是什么是否重要。。。我也不知道protobuf网络设计的细节。@Qwertie“为什么不支持它?”的答案总是两个选项之一;A)“没有人花时间去充分考虑它的后果,设计它,实施它,测试它”,或者B)“有人花了时间去做,并且发现它本身是有问题的”;我不能不强调我的记忆就告诉你这是哪一个场景,但这不是一个琐碎的场景,尽管听起来很琐碎。
[ProtoBuf.ProtoContract]
[ProtoBuf.Includes(101, typeof(B))
[ProtoBuf.Includes(101, typeof(C))
interface D{...}
[ProtoBuf.ProtoContract]
[ProtoBuf.Includes(101, typeof(A))
interface B:interfae D{...}
[ProtoBuf.ProtoContract]
[ProtoBuf.Includes(101, typeof(A))
interface C:interface D
{
   ...
}
[ProtoBuf.ProtoContract]
class A: interface B, interface C{...}