public CloudApiCatalogLookup(DotNetCatalog catalog) { _builtBy = catalog.BuiltBy; // we want to recreate the fast look-up data structures. _apiMapping = catalog.Apis.AsParallel() .ToDictionary(key => key.DocId, value => value.Targets.ToDictionary(innerkey => innerkey.Identifier, innervalue => innervalue.Version, StringComparer.OrdinalIgnoreCase)); _apiMetadata = catalog.Apis.AsParallel() .Where(api => api.Metadata != null) .ToDictionary( key => key.DocId, value => value.Metadata.ToDictionary( innerKey => innerKey.MetadataKey, innerValue => innerValue.Value, StringComparer.Ordinal), StringComparer.Ordinal); _publicTargets = catalog.SupportedTargets .Where(sp => sp.IsReleased) .Select(sp => sp.DisplayName) .ToList(); _latestTargetVersion = catalog.SupportedTargets .GroupBy(sp => sp.DisplayName.Identifier) .ToDictionary(key => key.Key, value => value.OrderByDescending(p => p.DisplayName.Version).First().DisplayName, StringComparer.OrdinalIgnoreCase); _allTargets = catalog.SupportedTargets; _frameworkAssemblies = new HashSet<string>(catalog.FrameworkAssemblyIdenties, StringComparer.OrdinalIgnoreCase); _docIdToApi = catalog.Apis.ToDictionary(key => key.DocId, key => new ApiDefinition { DocId = key.DocId, Name = key.Name, ReturnType = key.Type, FullName = key.FullName, Parent = key.Parent }); }
public CloudApiCatalogLookup(DotNetCatalog catalog) { _lastModified = catalog.LastModified; _builtBy = catalog.BuiltBy; // we want to recreate the fast look-up data structures. _apiMapping = catalog.Apis.AsParallel() .ToDictionary(key => key.DocId, #if NETSTANDARD1_3 value => value.Targets.ToDictionary(innerkey => innerkey.Identifier, #else value => value.Targets.ToDictionary(innerkey => string.Intern(innerkey.Identifier), #endif innervalue => innervalue.Version, StringComparer.OrdinalIgnoreCase)); _apiMetadata = catalog.Apis.AsParallel() .Where(api => api.Metadata != null) .ToDictionary( key => key.DocId, value => value.Metadata.ToDictionary( innerKey => innerKey.MetadataKey, innerValue => innerValue.Value, StringComparer.Ordinal), StringComparer.Ordinal); _publicTargets = catalog.SupportedTargets .Where(sp => sp.IsReleased) .Select(sp => sp.DisplayName) .ToList(); _latestTargetVersion = catalog.SupportedTargets .GroupBy(sp => sp.DisplayName.Identifier) .ToDictionary(key => key.Key, value => value.OrderByDescending(p => p.DisplayName.Version).First().DisplayName, StringComparer.OrdinalIgnoreCase); _allTargets = catalog.SupportedTargets; _frameworkAssemblies = new HashSet <string>(catalog.FrameworkAssemblyIdenties, StringComparer.OrdinalIgnoreCase); _docIdToApi = catalog.Apis.ToDictionary(key => key.DocId, key => new ApiDefinition { DocId = key.DocId, Name = key.Name, #if NETSTANDARD1_3 ReturnType = key.Type, #else ReturnType = string.Intern(key.Type), #endif FullName = key.FullName, Parent = key.Parent }); }