public static void GetConcreteSerializer( SerializationContext context, PolymorphismSchema schema, Type abstractType, Type targetType, Type exampleType, out ICollectionInstanceFactory factory, out IMessagePackSingleObjectSerializer serializer ) { if (abstractType == targetType) { throw SerializationExceptions.NewNotSupportedBecauseCannotInstanciateAbstractType(abstractType); } serializer = context.GetSerializer(targetType, schema); factory = serializer as ICollectionInstanceFactory; if (factory == null && (serializer as IPolymorphicDeserializer) == null) { throw SerializationExceptions.NewIncompatibleCollectionSerializer(abstractType, serializer.GetType(), exampleType); } }