我该如何优雅地处理protobuf-net中的未知子类型?

时间:2019-03-01 23:43:05

标签: c# protobuf-net

我有一个Color基类和一堆派生的颜色类:

public class Color { }

public class Red : Color { }
public class Blue : Color { }

在运行时类型模型中,我将所有派生的颜色添加为Color的子类型:

void AddColors(MetaType baseColorMeta, List<Type> colors)
{
    // Demonstration; the field numbers are consistent in actual code
    for (var i = 0; i < colors.Count; ++i)
      baseColorMeta.AddSubType(i, colors[i]);
}

在服务器应用程序中的某个地方,我序列化了包含一堆颜色的列表,并将其通过电线发送给客户端:

var colors = new List<Color> { new Red(), new Blue() };
MyTypeModel.Serialize(socket, colors);

我遇到了一个问题,服务器可能会引入客户端不知道的新颜色,这会导致“未知子类型”异常。从客户的角度来看,这是预料之中的,它应该知道如何处理这些未知的事物。

我是否可以通过任何方式在客户端上正常处理此问题,或为未知子类型(例如UnknownColor类)提供某种默认值?

0 个答案:

没有答案