File: src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\Symbols\CodeGenerationNamespaceOrTypeSymbol.cs
Web Access
Project: src\src\CodeStyle\Core\CodeFixes\Microsoft.CodeAnalysis.CodeStyle.Fixes.csproj (Microsoft.CodeAnalysis.CodeStyle.Fixes)
// 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;
using Microsoft.CodeAnalysis.Editing;
 
namespace Microsoft.CodeAnalysis.CodeGeneration;
 
internal abstract class CodeGenerationNamespaceOrTypeSymbol : CodeGenerationSymbol, INamespaceOrTypeSymbol
{
    protected CodeGenerationNamespaceOrTypeSymbol(
        IAssemblySymbol containingAssembly,
        INamedTypeSymbol containingType,
        ImmutableArray<AttributeData> attributes,
        Accessibility declaredAccessibility,
        DeclarationModifiers modifiers,
        string name)
        : base(containingAssembly, containingType, attributes, declaredAccessibility, modifiers, name)
    {
    }
 
    public virtual ImmutableArray<ISymbol> GetMembers()
        => [];
 
    public ImmutableArray<ISymbol> GetMembers(string name)
        => GetMembers().WhereAsArray(s => s.Name == name);
 
    public virtual ImmutableArray<INamedTypeSymbol> GetTypeMembers()
        => [];
 
    public ImmutableArray<INamedTypeSymbol> GetTypeMembers(string name)
        => GetTypeMembers().WhereAsArray(s => s.Name == name);
 
    public ImmutableArray<INamedTypeSymbol> GetTypeMembers(string name, int arity)
        => GetTypeMembers(name).WhereAsArray(n => n.Arity == arity);
 
    public abstract bool IsNamespace { get; }
 
    public abstract bool IsType { get; }
}