aspnetcore/src/Microsoft.AspNetCore.Mvc.An.../ApiControllerSymbolCache.cs

67 lines
3.3 KiB
C#

// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using Microsoft.CodeAnalysis;
namespace Microsoft.AspNetCore.Mvc.Analyzers
{
internal readonly struct ApiControllerSymbolCache
{
public ApiControllerSymbolCache(Compilation compilation)
{
ActionResultOfT = compilation.GetTypeByMetadataName(SymbolNames.ActionResultOfT);
ApiConventionMethodAttribute = compilation.GetTypeByMetadataName(SymbolNames.ApiConventionMethodAttribute);
ApiConventionNameMatchAttribute = compilation.GetTypeByMetadataName(SymbolNames.ApiConventionNameMatchAttribute);
ApiConventionTypeAttribute = compilation.GetTypeByMetadataName(SymbolNames.ApiConventionTypeAttribute);
ApiConventionTypeMatchAttribute = compilation.GetTypeByMetadataName(SymbolNames.ApiConventionTypeMatchAttribute);
ControllerAttribute = compilation.GetTypeByMetadataName(SymbolNames.ControllerAttribute);
DefaultStatusCodeAttribute = compilation.GetTypeByMetadataName(SymbolNames.DefaultStatusCodeAttribute);
IActionResult = compilation.GetTypeByMetadataName(SymbolNames.IActionResult);
IApiBehaviorMetadata = compilation.GetTypeByMetadataName(SymbolNames.IApiBehaviorMetadata);
IConvertToActionResult = compilation.GetTypeByMetadataName(SymbolNames.IConvertToActionResult);
ModelStateDictionary = compilation.GetTypeByMetadataName(SymbolNames.ModelStateDictionary);
NonActionAttribute = compilation.GetTypeByMetadataName(SymbolNames.NonActionAttribute);
NonControllerAttribute = compilation.GetTypeByMetadataName(SymbolNames.NonControllerAttribute);
ProducesDefaultResponseTypeAttribute = compilation.GetTypeByMetadataName(SymbolNames.ProducesDefaultResponseTypeAttribute);
ProducesResponseTypeAttribute = compilation.GetTypeByMetadataName(SymbolNames.ProducesResponseTypeAttribute);
var disposable = compilation.GetSpecialType(SpecialType.System_IDisposable);
var members = disposable.GetMembers(nameof(IDisposable.Dispose));
IDisposableDispose = members.Length == 1 ? (IMethodSymbol)members[0] : null;
}
public INamedTypeSymbol ActionResultOfT { get; }
public INamedTypeSymbol ApiConventionMethodAttribute { get; }
public INamedTypeSymbol ApiConventionNameMatchAttribute { get; }
public INamedTypeSymbol ApiConventionTypeAttribute { get; }
public INamedTypeSymbol ApiConventionTypeMatchAttribute { get; }
public INamedTypeSymbol ControllerAttribute { get; }
public INamedTypeSymbol DefaultStatusCodeAttribute { get; }
public INamedTypeSymbol IActionResult { get; }
public INamedTypeSymbol IApiBehaviorMetadata { get; }
public INamedTypeSymbol IConvertToActionResult { get; }
public IMethodSymbol IDisposableDispose { get; }
public ITypeSymbol ModelStateDictionary { get; }
public INamedTypeSymbol NonActionAttribute { get; }
public INamedTypeSymbol NonControllerAttribute { get; }
public INamedTypeSymbol ProducesDefaultResponseTypeAttribute { get; }
public INamedTypeSymbol ProducesResponseTypeAttribute { get; }
}
}