|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
namespace Microsoft.CodeAnalysis.Options;
/// <summary>
/// Some options store their values in a type that's not accessible publicly.
/// The mapping provides translation between the two representations.
/// </summary>
internal abstract class OptionStorageMapping(IOption2 internalOption)
{
/// <summary>
/// The option that stores the value internally.
/// </summary>
public IOption2 InternalOption { get; } = internalOption;
/// <summary>
/// Converts internal option value representation to public.
/// </summary>
public abstract object? ToPublicOptionValue(object? internalValue);
/// <summary>
/// Returns a new internal value created by updating <paramref name="currentInternalValue"/> to <paramref name="newPublicValue"/>.
/// </summary>
public abstract object? UpdateInternalOptionValue(object? currentInternalValue, object? newPublicValue);
}
|