private bool TryGetDiscriminatorFor( DataContract dataContract, SchemaRepository schemaRepository, IEnumerable <DataContract> knownTypesDataContracts, ParameterInfo parameterInfo, out OpenApiDiscriminator discriminator) { discriminator = null; var discriminatorName = _generatorOptions.DiscriminatorNameSelector(dataContract.UnderlyingType) ?? dataContract.ObjectTypeNameProperty; if (discriminatorName == null) { return(false); } discriminator = new OpenApiDiscriminator { PropertyName = discriminatorName }; foreach (var knownTypeDataContract in knownTypesDataContracts) { var discriminatorValue = _generatorOptions.DiscriminatorValueSelector(knownTypeDataContract.UnderlyingType) ?? knownTypeDataContract.ObjectTypeNameValue; if (discriminatorValue == null) { continue; } discriminator.Mapping.Add(discriminatorValue, GenerateConcreteSchema(knownTypeDataContract, schemaRepository, parameterInfo).Reference.ReferenceV3); } return(true); }