/// <summary> /// get a ApiDescriptionGroup from your dependency injection and use it to query all used types /// </summary> /// <param name="apiDescription"></param> /// <param name="mediaTypesToCheck"></param> /// <returns></returns> public DistinctTypeList GetUsedContractTypes(ApiDescriptionGroup apiDescription, string?mediaTypesToCheck = null) { var apiDescriptions = apiDescription.Items .Where(w => w is not null) ; var usedTypes = new DistinctTypeList(); foreach (var description in apiDescriptions !) { var bodyParameter = description.ParameterDescriptions.Where(IsBodyParameter); usedTypes.AddRange(bodyParameter.Select(s => s.Type)); //TODO option to check for default Asp.net classes var responseParameter = description.SupportedResponseTypes.Where(w => w.Type != null && IsCorrectMediaType(mediaTypesToCheck, w)); usedTypes.AddRange(responseParameter.Select(s => s.Type)); } return(usedTypes); }
/// <summary> /// get a IApiDescriptionGroupCollectionProvider from your dependency injection and use it to query all used types /// </summary> /// <param name="apiDescription"></param> /// <param name="mediaTypesToCheck"></param> /// <returns></returns> public DistinctTypeList GetUsedContractTypes(IApiDescriptionGroupCollectionProvider apiDescription, string?mediaTypesToCheck = null) { var apiDescriptions = apiDescription.ApiDescriptionGroups?.Items; var usedTypes = new DistinctTypeList(); foreach (var description in apiDescriptions !) { usedTypes.AddRange(GetUsedContractTypes(description, mediaTypesToCheck)); } return(usedTypes); }