我有一个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
类)提供某种默认值?