I'm trying to get my head around protobuf-net at the moment, and found this article on being able to serialize sub-types: How to Serialize Inherited Class with ProtoBuf-Net
Effectively this suggests that the base type needs to know about the sub-type:
[ProtoContract]
[ProtoInclude(1, typeof(SubType))]
class BaseType { ... }
class SubType : BaseType { ... }
Questions:
However!
No, it can't work with unknown subtypes unless you mean: by ignoring the subtype aspect completely and just treating it as though it were the known type.