| File: INuGetResourceProvider.cs | Web Access |
| Project: src\nuget-client\src\NuGet.Core\NuGet.Protocol\NuGet.Protocol.csproj (NuGet.Protocol) |
// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; namespace NuGet.Protocol.Core.Types { /// <summary> /// INuGetResourceProviders are imported by SourceRepository. They exist as singletons which span all sources, /// and are responsible /// for determining if they should be used for the given source when TryCreate is called. /// The provider determines the caching. Resources may be cached per source, but they are normally created new /// each time /// to allow for caching within the context they were created in. /// Providers may retrieve other resources from the source repository and pass them to the resources they /// create in order /// to build on them. /// </summary> public interface INuGetResourceProvider { /// <summary> /// Attempts to create a resource for this source. /// </summary> /// <remarks> /// The provider may return true but null for the resource if the /// provider determines that it should not exist. /// </remarks> /// <param name="source">Source repository</param> /// <returns>True if this provider handles the input source.</returns> Task<Tuple<bool, INuGetResource?>> TryCreate(SourceRepository source, CancellationToken token); /// <summary> /// Resource type provided /// </summary> Type ResourceType { get; } /// <summary> /// Name of the provider. This is used for ordering. /// </summary> string Name { get; } /// <summary> /// Names of providers this should be ordered BEFORE /// Gives this instance a higher priority. /// </summary> /// <remarks>If provider: default is named here, this provider will be called BEFORE default</remarks> IEnumerable<string> Before { get; } /// <summary> /// Names of providers this should be ordered AFTER. /// Gives this instance a lower priority. /// </summary> /// <remarks>If provider: default is named here, this provider will be called AFTER default</remarks> IEnumerable<string> After { get; } } }