File: src\Analyzers\Core\CodeFixes\ImplementInterface\IImplementInterfaceInfo.cs
Web Access
Project: src\src\Features\Core\Portable\Microsoft.CodeAnalysis.Features.csproj (Microsoft.CodeAnalysis.Features)
// 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.Collections.Immutable;
 
namespace Microsoft.CodeAnalysis.ImplementInterface;
 
internal interface IImplementInterfaceInfo
{
    /// <summary>
    /// The class or struct that is implementing the interface.
    /// </summary>
    INamedTypeSymbol ClassOrStructType { get; }
 
    /// <summary>
    /// The specific declaration node for <see cref="ClassOrStructType"/> that the interface implementations should be
    /// added to.
    /// </summary>
    SyntaxNode ClassOrStructDecl { get; }
 
    SyntaxNode InterfaceNode { get; }
 
    /// <summary>
    /// Set of interfaces to implement.  Normally a single interface (when a user invokes the code action on a single
    /// entry in the interface-list for a type).  However, it may be multiple in the VB case where a user presses
    /// 'enter' at the end of the interfaces list, where we'll implement all the missing members for all listed interfaces.
    /// </summary>
    ImmutableArray<INamedTypeSymbol> InterfaceTypes { get; }
 
    ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> MembersWithoutExplicitOrImplicitImplementationWhichCanBeImplicitlyImplemented { get; }
    ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> MembersWithoutExplicitOrImplicitImplementation { get; }
    ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> MembersWithoutExplicitImplementation { get; }
}