private bool IsBaseTypeWithKnownTypesDefined(DataContract dataContract, ParameterInfo parameterInfo, out IEnumerable <DataContract> knownTypesDataContracts) { knownTypesDataContracts = null; if (dataContract.DataType != DataType.Object) { return(false); } var subTypes = _generatorOptions.SubTypesSelector(dataContract.UnderlyingType); if (!subTypes.Any()) { return(false); } var knownTypes = !dataContract.UnderlyingType.IsAbstract ? new[] { dataContract.UnderlyingType }.Union(subTypes) : subTypes; knownTypesDataContracts = knownTypes.Select(knownType => GetDataContractFor(knownType)); return(true); }