File: CodeStyle\NotificationOption.cs
Web Access
Project: src\src\roslyn\src\Workspaces\Core\Portable\Microsoft.CodeAnalysis.Workspaces.csproj (Microsoft.CodeAnalysis.Workspaces)
// 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.

using System;
using Microsoft.CodeAnalysis.Diagnostics;

namespace Microsoft.CodeAnalysis.CodeStyle;

/// <inheritdoc cref="NotificationOption2"/>
public sealed class NotificationOption
{
    private readonly NotificationOption2 _notificationOptionImpl;

    /// <summary>
    /// Name for the notification option.
    /// </summary>
    public string Name
    {
        get => Severity.GetDisplayString();

        [Obsolete("Modifying a NotificationOption is not supported.", error: true)]
        set => throw new InvalidOperationException();
    }

    /// <inheritdoc cref="NotificationOption2.Severity"/>
    public ReportDiagnostic Severity
    {
        get => _notificationOptionImpl.Severity;

        [Obsolete("Modifying a NotificationOption is not supported.", error: true)]
        set => throw new InvalidOperationException();
    }

    [Obsolete("Use " + nameof(Severity) + " instead.")]
    public DiagnosticSeverity Value
    {
        get => Severity.ToDiagnosticSeverity() ?? DiagnosticSeverity.Hidden;
        set => throw new InvalidOperationException();
    }

    /// <inheritdoc cref="NotificationOption2.None"/>
    public static readonly NotificationOption None = new(NotificationOption2.None);

    /// <inheritdoc cref="NotificationOption2.Silent"/>
    public static readonly NotificationOption Silent = new(NotificationOption2.Silent);

    /// <inheritdoc cref="NotificationOption2.Suggestion"/>
    public static readonly NotificationOption Suggestion = new(NotificationOption2.Suggestion);

    /// <inheritdoc cref="NotificationOption2.Warning"/>
    public static readonly NotificationOption Warning = new(NotificationOption2.Warning);

    /// <inheritdoc cref="NotificationOption2.Error"/>
    public static readonly NotificationOption Error = new(NotificationOption2.Error);

    private NotificationOption(NotificationOption2 notificationOptionImpl)
        => _notificationOptionImpl = notificationOptionImpl;

    public override string ToString() => Name;
}