File: BackEnd\Components\Caching\IRegisteredTaskObjectCache.cs
Web Access
Project: ..\..\..\src\Build\Microsoft.Build.csproj (Microsoft.Build)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Microsoft.Build.Framework;
 
#nullable disable
 
#if BUILD_ENGINE
namespace Microsoft.Build.BackEnd.Components.Caching
#else
namespace Microsoft.Build.Shared
#endif
{
    /// <summary>
    /// Defines a cache for registered task objects.
    /// </summary>
    internal interface IRegisteredTaskObjectCache
    {
        /// <summary>
        /// Disposes of all of the objects with the specified lifetime.
        /// </summary>
        void DisposeCacheObjects(RegisteredTaskObjectLifetime lifetime);
 
        /// <summary>
        /// Registers a task object with the specified key and lifetime.
        /// </summary>
        void RegisterTaskObject(object key, object obj, RegisteredTaskObjectLifetime lifetime, bool allowEarlyCollection);
 
        /// <summary>
        /// Gets a previously registered task object.
        /// </summary>
        object GetRegisteredTaskObject(object key, RegisteredTaskObjectLifetime lifetime);
 
        /// <summary>
        /// Unregisters a task object.
        /// </summary>
        object UnregisterTaskObject(object key, RegisteredTaskObjectLifetime lifetime);
    }
}