Fix more null refs in Api Analyzers (#10375)
* Fix more null refs in Api Analyzers * Make attributes used by analyzer public * Compile analyzer tests against ref assemblies * Turn on Nullable reference types and harden some null-checks Fixes https://github.com/aspnet/AspNetCore/issues/8686
This commit is contained in:
parent
e925df6a85
commit
26b53236b1
|
|
@ -1,7 +1,6 @@
|
|||
// 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 System.Collections.Immutable;
|
||||
using Microsoft.CodeAnalysis;
|
||||
using Microsoft.CodeAnalysis.Diagnostics;
|
||||
|
|
@ -122,7 +121,7 @@ namespace Microsoft.AspNetCore.Mvc.Analyzers
|
|||
}
|
||||
}
|
||||
|
||||
private static AttributeData GetAttribute(ISymbol symbol, INamedTypeSymbol attributeType)
|
||||
private static AttributeData? GetAttribute(ISymbol symbol, INamedTypeSymbol attributeType)
|
||||
{
|
||||
foreach (var attribute in symbol.GetAttributes())
|
||||
{
|
||||
|
|
|
|||
|
|
@ -31,9 +31,10 @@ namespace Microsoft.CodeAnalysis
|
|||
Debug.Assert(methodSymbol != null);
|
||||
Debug.Assert(attribute != null);
|
||||
|
||||
while (methodSymbol != null)
|
||||
IMethodSymbol? current = methodSymbol;
|
||||
while (current != null)
|
||||
{
|
||||
foreach (var attributeData in GetAttributes(methodSymbol, attribute))
|
||||
foreach (var attributeData in GetAttributes(current, attribute))
|
||||
{
|
||||
yield return attributeData;
|
||||
}
|
||||
|
|
@ -43,7 +44,7 @@ namespace Microsoft.CodeAnalysis
|
|||
break;
|
||||
}
|
||||
|
||||
methodSymbol = methodSymbol.IsOverride ? methodSymbol.OverriddenMethod : null;
|
||||
current = current.IsOverride ? current.OverriddenMethod : null;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -76,14 +77,15 @@ namespace Microsoft.CodeAnalysis
|
|||
return HasAttribute(propertySymbol, attribute);
|
||||
}
|
||||
|
||||
while (propertySymbol != null)
|
||||
IPropertySymbol? current = propertySymbol;
|
||||
while (current != null)
|
||||
{
|
||||
if (propertySymbol.HasAttribute(attribute))
|
||||
if (current.HasAttribute(attribute))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
propertySymbol = propertySymbol.IsOverride ? propertySymbol.OverriddenProperty : null;
|
||||
current = current.IsOverride ? current.OverriddenProperty : null;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -9,6 +9,8 @@
|
|||
<IncludeBuildOutput>false</IncludeBuildOutput>
|
||||
<GenerateDocumentationFile>false</GenerateDocumentationFile>
|
||||
<NuspecFile>$(MSBuildProjectName).nuspec</NuspecFile>
|
||||
<NullableContextOptions>enable</NullableContextOptions>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@
|
|||
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Immutable;
|
||||
using System.Linq;
|
||||
using Microsoft.CodeAnalysis;
|
||||
|
|
@ -24,8 +23,7 @@ namespace Microsoft.AspNetCore.Mvc.Analyzers
|
|||
|
||||
context.RegisterCompilationStartAction(compilationStartAnalysisContext =>
|
||||
{
|
||||
var typeCache = new SymbolCache(compilationStartAnalysisContext.Compilation);
|
||||
if (typeCache.ControllerAttribute == null || typeCache.ControllerAttribute.TypeKind == TypeKind.Error)
|
||||
if (!SymbolCache.TryCreate(compilationStartAnalysisContext.Compilation, out var typeCache))
|
||||
{
|
||||
// No-op if we can't find types we care about.
|
||||
return;
|
||||
|
|
@ -185,20 +183,100 @@ namespace Microsoft.AspNetCore.Mvc.Analyzers
|
|||
|
||||
internal readonly struct SymbolCache
|
||||
{
|
||||
public SymbolCache(Compilation compilation)
|
||||
public SymbolCache(
|
||||
INamedTypeSymbol bindAttribute,
|
||||
INamedTypeSymbol controllerAttribute,
|
||||
INamedTypeSymbol fromBodyAttribute,
|
||||
INamedTypeSymbol apiBehaviorMetadata,
|
||||
INamedTypeSymbol binderTypeProviderMetadata,
|
||||
INamedTypeSymbol modelNameProvider,
|
||||
INamedTypeSymbol nonControllerAttribute,
|
||||
INamedTypeSymbol nonActionAttribute,
|
||||
IMethodSymbol disposableDispose)
|
||||
{
|
||||
BindAttribute = compilation.GetTypeByMetadataName(SymbolNames.BindAttribute);
|
||||
ControllerAttribute = compilation.GetTypeByMetadataName(SymbolNames.ControllerAttribute);
|
||||
FromBodyAttribute = compilation.GetTypeByMetadataName(SymbolNames.FromBodyAttribute);
|
||||
IApiBehaviorMetadata = compilation.GetTypeByMetadataName(SymbolNames.IApiBehaviorMetadata);
|
||||
IBinderTypeProviderMetadata = compilation.GetTypeByMetadataName(SymbolNames.IBinderTypeProviderMetadata);
|
||||
IModelNameProvider = compilation.GetTypeByMetadataName(SymbolNames.IModelNameProvider);
|
||||
NonControllerAttribute = compilation.GetTypeByMetadataName(SymbolNames.NonControllerAttribute);
|
||||
NonActionAttribute = compilation.GetTypeByMetadataName(SymbolNames.NonActionAttribute);
|
||||
BindAttribute = bindAttribute;
|
||||
ControllerAttribute = controllerAttribute;
|
||||
FromBodyAttribute = fromBodyAttribute;
|
||||
IApiBehaviorMetadata = apiBehaviorMetadata;
|
||||
IBinderTypeProviderMetadata = binderTypeProviderMetadata;
|
||||
IModelNameProvider = modelNameProvider;
|
||||
NonControllerAttribute = nonControllerAttribute;
|
||||
NonActionAttribute = nonActionAttribute;
|
||||
IDisposableDispose = disposableDispose;
|
||||
}
|
||||
|
||||
public static bool TryCreate(Compilation compilation, out SymbolCache symbolCache)
|
||||
{
|
||||
symbolCache = default;
|
||||
|
||||
if (!TryGetType(SymbolNames.BindAttribute, out var bindAttribute))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
if (!TryGetType(SymbolNames.ControllerAttribute, out var controllerAttribute))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
if (!TryGetType(SymbolNames.FromBodyAttribute, out var fromBodyAttribute))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!TryGetType(SymbolNames.IApiBehaviorMetadata, out var apiBehaviorMetadata))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!TryGetType(SymbolNames.IBinderTypeProviderMetadata, out var iBinderTypeProviderMetadata))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!TryGetType(SymbolNames.IModelNameProvider, out var iModelNameProvider))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!TryGetType(SymbolNames.NonControllerAttribute, out var nonControllerAttribute))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!TryGetType(SymbolNames.NonActionAttribute, out var nonActionAttribute))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
var disposable = compilation.GetSpecialType(SpecialType.System_IDisposable);
|
||||
var members = disposable.GetMembers(nameof(IDisposable.Dispose));
|
||||
IDisposableDispose = members.Length == 1 ? (IMethodSymbol)members[0] : null;
|
||||
var members = disposable?.GetMembers(nameof(IDisposable.Dispose));
|
||||
var idisposableDispose = (IMethodSymbol?)members?[0];
|
||||
if (idisposableDispose == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
symbolCache = new SymbolCache(
|
||||
bindAttribute,
|
||||
controllerAttribute,
|
||||
fromBodyAttribute,
|
||||
apiBehaviorMetadata,
|
||||
iBinderTypeProviderMetadata,
|
||||
iModelNameProvider,
|
||||
nonControllerAttribute,
|
||||
nonActionAttribute,
|
||||
idisposableDispose);
|
||||
|
||||
return true;
|
||||
|
||||
bool TryGetType(string typeName, out INamedTypeSymbol typeSymbol)
|
||||
{
|
||||
typeSymbol = compilation.GetTypeByMetadataName(typeName);
|
||||
return typeSymbol != null && typeSymbol.TypeKind != TypeKind.Error;
|
||||
}
|
||||
}
|
||||
|
||||
public INamedTypeSymbol BindAttribute { get; }
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Mvc.Analyzers\src\Microsoft.AspNetCore.Mvc.Analyzers.csproj" />
|
||||
<Reference Include="Microsoft.AspNetCore.Mvc" />
|
||||
<ProjectReference Include="..\..\Mvc\ref\Microsoft.AspNetCore.Mvc.csproj" />
|
||||
<Reference Include="Microsoft.AspNetCore.Analyzer.Testing" />
|
||||
<Reference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" />
|
||||
</ItemGroup>
|
||||
|
|
|
|||
|
|
@ -134,7 +134,7 @@ namespace Microsoft.AspNetCore.Mvc.Analyzers
|
|||
var method = (IMethodSymbol)modelType.GetMembers("ActionMethod").First();
|
||||
var parameter = method.Parameters[0];
|
||||
|
||||
var symbolCache = new TopLevelParameterNameAnalyzer.SymbolCache(compilation);
|
||||
Assert.True(TopLevelParameterNameAnalyzer.SymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
var result = TopLevelParameterNameAnalyzer.IsProblematicParameter(symbolCache, parameter);
|
||||
return result;
|
||||
|
|
@ -145,7 +145,7 @@ namespace Microsoft.AspNetCore.Mvc.Analyzers
|
|||
{
|
||||
var methodName = nameof(GetNameTests.SingleAttribute);
|
||||
var compilation = await GetCompilationForGetName();
|
||||
var symbolCache = new TopLevelParameterNameAnalyzer.SymbolCache(compilation);
|
||||
Assert.True(TopLevelParameterNameAnalyzer.SymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
var type = compilation.GetTypeByMetadataName(typeof(GetNameTests).FullName);
|
||||
var method = (IMethodSymbol)type.GetMembers(methodName).First();
|
||||
|
|
@ -161,7 +161,7 @@ namespace Microsoft.AspNetCore.Mvc.Analyzers
|
|||
{
|
||||
var methodName = nameof(GetNameTests.NoAttribute);
|
||||
var compilation = await GetCompilationForGetName();
|
||||
var symbolCache = new TopLevelParameterNameAnalyzer.SymbolCache(compilation);
|
||||
Assert.True(TopLevelParameterNameAnalyzer.SymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
var type = compilation.GetTypeByMetadataName(typeof(GetNameTests).FullName);
|
||||
var method = (IMethodSymbol)type.GetMembers(methodName).First();
|
||||
|
|
@ -177,7 +177,7 @@ namespace Microsoft.AspNetCore.Mvc.Analyzers
|
|||
{
|
||||
var methodName = nameof(GetNameTests.SingleAttributeWithoutName);
|
||||
var compilation = await GetCompilationForGetName();
|
||||
var symbolCache = new TopLevelParameterNameAnalyzer.SymbolCache(compilation);
|
||||
Assert.True(TopLevelParameterNameAnalyzer.SymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
var type = compilation.GetTypeByMetadataName(typeof(GetNameTests).FullName);
|
||||
var method = (IMethodSymbol)type.GetMembers(methodName).First();
|
||||
|
|
@ -193,7 +193,7 @@ namespace Microsoft.AspNetCore.Mvc.Analyzers
|
|||
{
|
||||
var methodName = nameof(GetNameTests.MultipleAttributes);
|
||||
var compilation = await GetCompilationForGetName();
|
||||
var symbolCache = new TopLevelParameterNameAnalyzer.SymbolCache(compilation);
|
||||
Assert.True(TopLevelParameterNameAnalyzer.SymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
var type = compilation.GetTypeByMetadataName(typeof(GetNameTests).FullName);
|
||||
var method = (IMethodSymbol)type.GetMembers(methodName).First();
|
||||
|
|
@ -221,7 +221,7 @@ namespace Microsoft.AspNetCore.Mvc.Analyzers
|
|||
var project = DiagnosticProject.Create(GetType().Assembly, new[] { testSource.Source });
|
||||
|
||||
var compilation = await project.GetCompilationAsync();
|
||||
var symbolCache = new TopLevelParameterNameAnalyzer.SymbolCache(compilation);
|
||||
Assert.True(TopLevelParameterNameAnalyzer.SymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
var type = compilation.GetTypeByMetadataName(typeof(SpecifiesModelTypeTests).FullName);
|
||||
var method = (IMethodSymbol)type.GetMembers(testMethod).First();
|
||||
|
|
@ -239,7 +239,7 @@ namespace Microsoft.AspNetCore.Mvc.Analyzers
|
|||
var project = DiagnosticProject.Create(GetType().Assembly, new[] { testSource.Source });
|
||||
|
||||
var compilation = await project.GetCompilationAsync();
|
||||
var symbolCache = new TopLevelParameterNameAnalyzer.SymbolCache(compilation);
|
||||
Assert.True(TopLevelParameterNameAnalyzer.SymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
var type = compilation.GetTypeByMetadataName(typeof(SpecifiesModelTypeTests).FullName);
|
||||
var method = (IMethodSymbol)type.GetMembers(testMethod).First();
|
||||
|
|
@ -257,7 +257,7 @@ namespace Microsoft.AspNetCore.Mvc.Analyzers
|
|||
var project = DiagnosticProject.Create(GetType().Assembly, new[] { testSource.Source });
|
||||
|
||||
var compilation = await project.GetCompilationAsync();
|
||||
var symbolCache = new TopLevelParameterNameAnalyzer.SymbolCache(compilation);
|
||||
Assert.True(TopLevelParameterNameAnalyzer.SymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
var type = compilation.GetTypeByMetadataName(typeof(SpecifiesModelTypeTests).FullName);
|
||||
var method = (IMethodSymbol)type.GetMembers(testMethod).First();
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
// 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;
|
||||
using Microsoft.CodeAnalysis.CSharp.Syntax;
|
||||
|
||||
|
|
@ -17,7 +18,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
_statusCode = null;
|
||||
}
|
||||
|
||||
public ActualApiResponseMetadata(ReturnStatementSyntax returnStatement, int statusCode, ITypeSymbol returnType)
|
||||
public ActualApiResponseMetadata(ReturnStatementSyntax returnStatement, int statusCode, ITypeSymbol? returnType)
|
||||
{
|
||||
ReturnStatement = returnStatement;
|
||||
_statusCode = statusCode;
|
||||
|
|
@ -26,10 +27,10 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
|
||||
public ReturnStatementSyntax ReturnStatement { get; }
|
||||
|
||||
public int StatusCode => _statusCode.Value;
|
||||
public int StatusCode => _statusCode ?? throw new ArgumentException("Status code is not available when IsDefaultResponse is true");
|
||||
|
||||
public bool IsDefaultResponse => _statusCode == null;
|
||||
|
||||
public ITypeSymbol ReturnType { get; }
|
||||
public ITypeSymbol? ReturnType { get; }
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -87,13 +87,13 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
.FirstOrDefault();
|
||||
|
||||
var statusCode = GetDefaultStatusCode(defaultStatusCodeAttribute);
|
||||
ITypeSymbol returnType = null;
|
||||
ITypeSymbol? returnType = null;
|
||||
switch (returnExpression)
|
||||
{
|
||||
case InvocationExpressionSyntax invocation:
|
||||
{
|
||||
// Covers the 'return StatusCode(200)' case.
|
||||
var result = InspectMethodArguments(symbolCache, semanticModel, invocation.Expression, invocation.ArgumentList, cancellationToken);
|
||||
var result = InspectMethodArguments(semanticModel, invocation.Expression, invocation.ArgumentList, cancellationToken);
|
||||
statusCode = result.statusCode ?? statusCode;
|
||||
returnType = result.returnType;
|
||||
break;
|
||||
|
|
@ -102,7 +102,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
case ObjectCreationExpressionSyntax creation:
|
||||
{
|
||||
// Read values from 'return new StatusCodeResult(200) case.
|
||||
var result = InspectMethodArguments(symbolCache, semanticModel, creation, creation.ArgumentList, cancellationToken);
|
||||
var result = InspectMethodArguments(semanticModel, creation, creation.ArgumentList, cancellationToken);
|
||||
statusCode = result.statusCode ?? statusCode;
|
||||
returnType = result.returnType;
|
||||
|
||||
|
|
@ -123,14 +123,14 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
return new ActualApiResponseMetadata(returnStatementSyntax, statusCode.Value, returnType);
|
||||
}
|
||||
|
||||
private static (int? statusCode, ITypeSymbol returnType) InspectInitializers(
|
||||
private static (int? statusCode, ITypeSymbol? returnType) InspectInitializers(
|
||||
in ApiControllerSymbolCache symbolCache,
|
||||
SemanticModel semanticModel,
|
||||
InitializerExpressionSyntax initializer,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
int? statusCode = null;
|
||||
ITypeSymbol typeSymbol = null;
|
||||
ITypeSymbol? typeSymbol = null;
|
||||
|
||||
for (var i = 0; initializer != null && i < initializer.Expressions.Count; i++)
|
||||
{
|
||||
|
|
@ -162,15 +162,14 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
return (statusCode, typeSymbol);
|
||||
}
|
||||
|
||||
private static (int? statusCode, ITypeSymbol returnType) InspectMethodArguments(
|
||||
in ApiControllerSymbolCache symbolCache,
|
||||
private static (int? statusCode, ITypeSymbol? returnType) InspectMethodArguments(
|
||||
SemanticModel semanticModel,
|
||||
ExpressionSyntax expression,
|
||||
BaseArgumentListSyntax argumentList,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
int? statusCode = null;
|
||||
ITypeSymbol typeSymbol = null;
|
||||
ITypeSymbol? typeSymbol = null;
|
||||
|
||||
var symbolInfo = semanticModel.GetSymbolInfo(expression, cancellationToken);
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
|
@ -43,7 +44,14 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
|
||||
protected override async Task<Document> GetChangedDocumentAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
var context = await CreateCodeActionContext(cancellationToken).ConfigureAwait(false);
|
||||
var nullableContext = await CreateCodeActionContext(cancellationToken).ConfigureAwait(false);
|
||||
if (nullableContext == null)
|
||||
{
|
||||
return _document;
|
||||
}
|
||||
|
||||
var context = nullableContext.Value;
|
||||
|
||||
var declaredResponseMetadata = SymbolApiResponseMetadataProvider.GetDeclaredResponseMetadata(context.SymbolCache, context.Method);
|
||||
var errorResponseType = SymbolApiResponseMetadataProvider.GetErrorResponseType(context.SymbolCache, context.Method);
|
||||
|
||||
|
|
@ -56,8 +64,11 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
var documentEditor = await DocumentEditor.CreateAsync(_document, cancellationToken).ConfigureAwait(false);
|
||||
|
||||
var addUsingDirective = false;
|
||||
foreach (var (statusCode, returnType) in results.OrderBy(s => s.statusCode))
|
||||
foreach (var item in results.OrderBy(s => s.statusCode))
|
||||
{
|
||||
var statusCode = item.statusCode;
|
||||
var returnType = item.typeSymbol;
|
||||
|
||||
AttributeSyntax attributeSyntax;
|
||||
bool addUsing;
|
||||
|
||||
|
|
@ -113,7 +124,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
return document.WithSyntaxRoot(root);
|
||||
}
|
||||
|
||||
private async Task<CodeActionContext> CreateCodeActionContext(CancellationToken cancellationToken)
|
||||
private async Task<CodeActionContext?> CreateCodeActionContext(CancellationToken cancellationToken)
|
||||
{
|
||||
var root = await _document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
|
||||
var semanticModel = await _document.GetSemanticModelAsync(cancellationToken).ConfigureAwait(false);
|
||||
|
|
@ -124,7 +135,10 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
var statusCodesType = semanticModel.Compilation.GetTypeByMetadataName(ApiSymbolNames.HttpStatusCodes);
|
||||
var statusCodeConstants = GetStatusCodeConstants(statusCodesType);
|
||||
|
||||
var symbolCache = new ApiControllerSymbolCache(semanticModel.Compilation);
|
||||
if (!ApiControllerSymbolCache.TryCreate(semanticModel.Compilation, out var symbolCache))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
var codeActionContext = new CodeActionContext(semanticModel, symbolCache, method, methodSyntax, statusCodeConstants, cancellationToken);
|
||||
return codeActionContext;
|
||||
|
|
@ -152,15 +166,15 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
return statusCodeConstants;
|
||||
}
|
||||
|
||||
private ICollection<(int statusCode, ITypeSymbol typeSymbol)> CalculateStatusCodesToApply(in CodeActionContext context, IList<DeclaredApiResponseMetadata> declaredResponseMetadata)
|
||||
private ICollection<(int statusCode, ITypeSymbol? typeSymbol)> CalculateStatusCodesToApply(in CodeActionContext context, IList<DeclaredApiResponseMetadata> declaredResponseMetadata)
|
||||
{
|
||||
if (!ActualApiResponseMetadataFactory.TryGetActualResponseMetadata(context.SymbolCache, context.SemanticModel, context.MethodSyntax, context.CancellationToken, out var actualResponseMetadata))
|
||||
{
|
||||
// If we cannot parse metadata correctly, don't offer fixes.
|
||||
return Array.Empty<(int, ITypeSymbol)>();
|
||||
return Array.Empty<(int, ITypeSymbol?)>();
|
||||
}
|
||||
|
||||
var statusCodes = new Dictionary<int, (int, ITypeSymbol)>();
|
||||
var statusCodes = new Dictionary<int, (int, ITypeSymbol?)>();
|
||||
foreach (var metadata in actualResponseMetadata)
|
||||
{
|
||||
if (DeclaredApiResponseMetadata.TryGetDeclaredMetadata(declaredResponseMetadata, metadata, result: out var declaredMetadata) &&
|
||||
|
|
|
|||
|
|
@ -23,8 +23,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
|
||||
context.RegisterCompilationStartAction(compilationStartAnalysisContext =>
|
||||
{
|
||||
var symbolCache = new ApiControllerSymbolCache(compilationStartAnalysisContext.Compilation);
|
||||
if (symbolCache.ApiConventionTypeAttribute == null || symbolCache.ApiConventionTypeAttribute.TypeKind == TypeKind.Error)
|
||||
if (!ApiControllerSymbolCache.TryCreate(compilationStartAnalysisContext.Compilation, out var symbolCache))
|
||||
{
|
||||
// No-op if we can't find types we care about.
|
||||
return;
|
||||
|
|
@ -55,12 +54,18 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
}
|
||||
|
||||
var parent = ifOperation.Parent;
|
||||
if (parent?.Kind == OperationKind.Block)
|
||||
if (parent == null)
|
||||
{
|
||||
parent = parent?.Parent;
|
||||
// No parent, nothing to do
|
||||
return;
|
||||
}
|
||||
|
||||
if (parent?.Kind != OperationKind.MethodBodyOperation)
|
||||
if (parent.Kind == OperationKind.Block && parent.Parent != null)
|
||||
{
|
||||
parent = parent.Parent;
|
||||
}
|
||||
|
||||
if (parent.Kind != OperationKind.MethodBodyOperation)
|
||||
{
|
||||
// Only support top-level ModelState IsValid checks.
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -8,30 +8,164 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
{
|
||||
internal readonly struct ApiControllerSymbolCache
|
||||
{
|
||||
public ApiControllerSymbolCache(Compilation compilation)
|
||||
public static bool TryCreate(Compilation compilation, out ApiControllerSymbolCache symbolCache)
|
||||
{
|
||||
ApiConventionMethodAttribute = compilation.GetTypeByMetadataName(ApiSymbolNames.ApiConventionMethodAttribute);
|
||||
ApiConventionNameMatchAttribute = compilation.GetTypeByMetadataName(ApiSymbolNames.ApiConventionNameMatchAttribute);
|
||||
ApiConventionTypeAttribute = compilation.GetTypeByMetadataName(ApiSymbolNames.ApiConventionTypeAttribute);
|
||||
ApiConventionTypeMatchAttribute = compilation.GetTypeByMetadataName(ApiSymbolNames.ApiConventionTypeMatchAttribute);
|
||||
ControllerAttribute = compilation.GetTypeByMetadataName(ApiSymbolNames.ControllerAttribute);
|
||||
DefaultStatusCodeAttribute = compilation.GetTypeByMetadataName(ApiSymbolNames.DefaultStatusCodeAttribute);
|
||||
IActionResult = compilation.GetTypeByMetadataName(ApiSymbolNames.IActionResult);
|
||||
IApiBehaviorMetadata = compilation.GetTypeByMetadataName(ApiSymbolNames.IApiBehaviorMetadata);
|
||||
ModelStateDictionary = compilation.GetTypeByMetadataName(ApiSymbolNames.ModelStateDictionary);
|
||||
NonActionAttribute = compilation.GetTypeByMetadataName(ApiSymbolNames.NonActionAttribute);
|
||||
NonControllerAttribute = compilation.GetTypeByMetadataName(ApiSymbolNames.NonControllerAttribute);
|
||||
ProblemDetails = compilation.GetTypeByMetadataName(ApiSymbolNames.ProblemDetails);
|
||||
ProducesDefaultResponseTypeAttribute = compilation.GetTypeByMetadataName(ApiSymbolNames.ProducesDefaultResponseTypeAttribute);
|
||||
ProducesErrorResponseTypeAttribute = compilation.GetTypeByMetadataName(ApiSymbolNames.ProducesErrorResponseTypeAttribute);
|
||||
ProducesResponseTypeAttribute = compilation.GetTypeByMetadataName(ApiSymbolNames.ProducesResponseTypeAttribute);
|
||||
symbolCache = default;
|
||||
|
||||
if (!TryGetType(ApiSymbolNames.ApiConventionMethodAttribute, out var apiConventionMethodAttribute))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!TryGetType(ApiSymbolNames.ApiConventionNameMatchAttribute, out var apiConventionNameMatchAttribute))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!TryGetType(ApiSymbolNames.ApiConventionTypeAttribute, out var apiConventionTypeAttribute))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!TryGetType(ApiSymbolNames.ApiConventionTypeMatchAttribute, out var apiConventionTypeMatchAttribute))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!TryGetType(ApiSymbolNames.ControllerAttribute, out var controllerAttribute))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!TryGetType(ApiSymbolNames.DefaultStatusCodeAttribute, out var defaultStatusCodeAttribute))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!TryGetType(ApiSymbolNames.IActionResult, out var iActionResult))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!TryGetType(ApiSymbolNames.IApiBehaviorMetadata, out var iApiBehaviorMetadata))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!TryGetType(ApiSymbolNames.ModelStateDictionary, out var modelStateDictionary))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!TryGetType(ApiSymbolNames.NonActionAttribute, out var nonActionAttribute))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!TryGetType(ApiSymbolNames.NonControllerAttribute, out var nonControllerAttribute))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!TryGetType(ApiSymbolNames.ProblemDetails, out var problemDetails))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!TryGetType(ApiSymbolNames.ProducesDefaultResponseTypeAttribute, out var producesDefaultResponseTypeAttribute))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!TryGetType(ApiSymbolNames.ProducesErrorResponseTypeAttribute, out var producesErrorResponseTypeAttribute))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!TryGetType(ApiSymbolNames.ProducesResponseTypeAttribute, out var producesResponseTypeAttribute))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
var statusCodeActionResult = compilation.GetTypeByMetadataName(ApiSymbolNames.IStatusCodeActionResult);
|
||||
StatusCodeActionResultStatusProperty = (IPropertySymbol)statusCodeActionResult?.GetMembers("StatusCode")[0];
|
||||
var statusCodeActionResultStatusProperty = (IPropertySymbol?)statusCodeActionResult?.GetMembers("StatusCode")[0];
|
||||
if (statusCodeActionResultStatusProperty == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
var disposable = compilation.GetSpecialType(SpecialType.System_IDisposable);
|
||||
var members = disposable.GetMembers(nameof(IDisposable.Dispose));
|
||||
IDisposableDispose = members.Length == 1 ? (IMethodSymbol)members[0] : null;
|
||||
var members = disposable?.GetMembers(nameof(IDisposable.Dispose));
|
||||
var iDisposableDispose = (IMethodSymbol?)members?[0];
|
||||
if (iDisposableDispose == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
symbolCache = new ApiControllerSymbolCache(
|
||||
apiConventionMethodAttribute,
|
||||
apiConventionNameMatchAttribute,
|
||||
apiConventionTypeAttribute,
|
||||
apiConventionTypeMatchAttribute,
|
||||
controllerAttribute,
|
||||
defaultStatusCodeAttribute,
|
||||
iActionResult,
|
||||
iApiBehaviorMetadata,
|
||||
iDisposableDispose,
|
||||
statusCodeActionResultStatusProperty,
|
||||
modelStateDictionary,
|
||||
nonActionAttribute,
|
||||
nonControllerAttribute,
|
||||
problemDetails,
|
||||
producesDefaultResponseTypeAttribute,
|
||||
producesResponseTypeAttribute,
|
||||
producesErrorResponseTypeAttribute);
|
||||
|
||||
return true;
|
||||
|
||||
bool TryGetType(string typeName, out INamedTypeSymbol typeSymbol)
|
||||
{
|
||||
typeSymbol = compilation.GetTypeByMetadataName(typeName);
|
||||
return typeSymbol != null && typeSymbol.TypeKind != TypeKind.Error;
|
||||
}
|
||||
}
|
||||
|
||||
private ApiControllerSymbolCache(
|
||||
INamedTypeSymbol apiConventionMethodAttribute,
|
||||
INamedTypeSymbol apiConventionNameMatchAttribute,
|
||||
INamedTypeSymbol apiConventionTypeAttribute,
|
||||
INamedTypeSymbol apiConventionTypeMatchAttribute,
|
||||
INamedTypeSymbol controllerAttribute,
|
||||
INamedTypeSymbol defaultStatusCodeAttribute,
|
||||
INamedTypeSymbol actionResult,
|
||||
INamedTypeSymbol apiBehaviorMetadata,
|
||||
IMethodSymbol disposableDispose,
|
||||
IPropertySymbol statusCodeActionResultStatusProperty,
|
||||
ITypeSymbol modelStateDictionary,
|
||||
INamedTypeSymbol nonActionAttribute,
|
||||
INamedTypeSymbol nonControllerAttribute,
|
||||
INamedTypeSymbol problemDetails,
|
||||
INamedTypeSymbol producesDefaultResponseTypeAttribute,
|
||||
INamedTypeSymbol producesResponseTypeAttribute,
|
||||
INamedTypeSymbol producesErrorResponseTypeAttribute)
|
||||
{
|
||||
ApiConventionMethodAttribute = apiConventionMethodAttribute;
|
||||
ApiConventionNameMatchAttribute = apiConventionNameMatchAttribute;
|
||||
ApiConventionTypeAttribute = apiConventionTypeAttribute;
|
||||
ApiConventionTypeMatchAttribute = apiConventionTypeMatchAttribute;
|
||||
ControllerAttribute = controllerAttribute;
|
||||
DefaultStatusCodeAttribute = defaultStatusCodeAttribute;
|
||||
IActionResult = actionResult;
|
||||
IApiBehaviorMetadata = apiBehaviorMetadata;
|
||||
IDisposableDispose = disposableDispose;
|
||||
StatusCodeActionResultStatusProperty = statusCodeActionResultStatusProperty;
|
||||
ModelStateDictionary = modelStateDictionary;
|
||||
NonActionAttribute = nonActionAttribute;
|
||||
NonControllerAttribute = nonControllerAttribute;
|
||||
ProblemDetails = problemDetails;
|
||||
ProducesDefaultResponseTypeAttribute = producesDefaultResponseTypeAttribute;
|
||||
ProducesResponseTypeAttribute = producesResponseTypeAttribute;
|
||||
ProducesErrorResponseTypeAttribute = producesErrorResponseTypeAttribute;
|
||||
}
|
||||
|
||||
public INamedTypeSymbol ApiConventionMethodAttribute { get; }
|
||||
|
|
|
|||
|
|
@ -25,8 +25,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
|
||||
context.RegisterCompilationStartAction(compilationStartAnalysisContext =>
|
||||
{
|
||||
var symbolCache = new ApiControllerSymbolCache(compilationStartAnalysisContext.Compilation);
|
||||
if (symbolCache.ApiConventionTypeAttribute == null || symbolCache.ApiConventionTypeAttribute.TypeKind == TypeKind.Error)
|
||||
if (!ApiControllerSymbolCache.TryCreate(compilationStartAnalysisContext.Compilation, out var symbolCache))
|
||||
{
|
||||
// No-op if we can't find types we care about.
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -23,8 +23,8 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
|
||||
private DeclaredApiResponseMetadata(
|
||||
int statusCode,
|
||||
AttributeData attributeData,
|
||||
IMethodSymbol attributeSource,
|
||||
AttributeData? attributeData,
|
||||
IMethodSymbol? attributeSource,
|
||||
bool @implicit,
|
||||
bool @default)
|
||||
{
|
||||
|
|
@ -37,9 +37,9 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
|
||||
public int StatusCode { get; }
|
||||
|
||||
public AttributeData Attribute { get; }
|
||||
public AttributeData? Attribute { get; }
|
||||
|
||||
public IMethodSymbol AttributeSource { get; }
|
||||
public IMethodSymbol? AttributeSource { get; }
|
||||
|
||||
/// <summary>
|
||||
/// <c>True</c> if this <see cref="DeclaredApiResponseMetadata" /> is the implicit 200 associated with an
|
||||
|
|
|
|||
|
|
@ -9,6 +9,8 @@
|
|||
<IncludeBuildOutput>false</IncludeBuildOutput>
|
||||
<GenerateDocumentationFile>false</GenerateDocumentationFile>
|
||||
<NuspecFile>$(MSBuildProjectName).nuspec</NuspecFile>
|
||||
<NullableContextOptions>enable</NullableContextOptions>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
return Array.Empty<DeclaredApiResponseMetadata>();
|
||||
}
|
||||
|
||||
private static IMethodSymbol GetMethodFromConventionMethodAttribute(in ApiControllerSymbolCache symbolCache, IMethodSymbol method)
|
||||
private static IMethodSymbol? GetMethodFromConventionMethodAttribute(in ApiControllerSymbolCache symbolCache, IMethodSymbol method)
|
||||
{
|
||||
var attribute = method.GetAttributes(symbolCache.ApiConventionMethodAttribute, inherit: true)
|
||||
.FirstOrDefault();
|
||||
|
|
@ -113,7 +113,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
return (IMethodSymbol)conventionMethod;
|
||||
}
|
||||
|
||||
private static IMethodSymbol MatchConventionMethod(
|
||||
private static IMethodSymbol? MatchConventionMethod(
|
||||
in ApiControllerSymbolCache symbolCache,
|
||||
IMethodSymbol method,
|
||||
IReadOnlyList<ITypeSymbol> conventionTypes)
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
}";
|
||||
var project = DiagnosticProject.Create(GetType().Assembly, new[] { source });
|
||||
var compilation = await project.GetCompilationAsync();
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
var returnType = compilation.GetTypeByMetadataName($"{Namespace}.TestController");
|
||||
var syntaxTree = returnType.DeclaringSyntaxReferences[0].SyntaxTree;
|
||||
|
|
@ -307,7 +307,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
|
||||
var type = compilation.GetTypeByMetadataName(typeName);
|
||||
var method = (IMethodSymbol)type.GetMembers(methodName).First();
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
var syntaxTree = method.DeclaringSyntaxReferences[0].SyntaxTree;
|
||||
var methodSyntax = (MethodDeclarationSyntax)syntaxTree.GetRoot().FindNode(method.Locations[0].SourceSpan);
|
||||
|
|
@ -322,7 +322,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
{
|
||||
// Arrange
|
||||
var compilation = await GetCompilation("InspectReturnExpressionTests");
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
var controllerType = compilation.GetTypeByMetadataName(typeof(TestFiles.InspectReturnExpressionTests.TestController).FullName);
|
||||
var syntaxTree = controllerType.DeclaringSyntaxReferences[0].SyntaxTree;
|
||||
|
|
@ -342,7 +342,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
{
|
||||
var project = DiagnosticProject.Create(GetType().Assembly, new[] { source });
|
||||
var compilation = await project.GetCompilationAsync();
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
var returnType = compilation.GetTypeByMetadataName($"{Namespace}.{test}");
|
||||
var syntaxTree = returnType.DeclaringSyntaxReferences[0].SyntaxTree;
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ namespace TestNamespace
|
|||
}";
|
||||
var project = DiagnosticProject.Create(GetType().Assembly, new[] { source });
|
||||
var compilation = await project.GetCompilationAsync();
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
var method = (IMethodSymbol)compilation.GetTypeByMetadataName("TestNamespace.TestController").GetMembers("Get").First();
|
||||
|
||||
// Act
|
||||
|
|
@ -52,7 +52,7 @@ namespace TestNamespace
|
|||
{
|
||||
// Arrange
|
||||
var compilation = await GetCompilation();
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
var type = compilation.GetTypeByMetadataName(typeof(ApiConventionAnalyzerTest_IndexModel).FullName);
|
||||
var method = (IMethodSymbol)type.GetMembers(nameof(ApiConventionAnalyzerTest_IndexModel.OnGet)).First();
|
||||
|
||||
|
|
@ -68,7 +68,7 @@ namespace TestNamespace
|
|||
{
|
||||
// Arrange
|
||||
var compilation = await GetCompilation();
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
var type = compilation.GetTypeByMetadataName(typeof(ApiConventionAnalyzerTest_NotApiController).FullName);
|
||||
var method = (IMethodSymbol)type.GetMembers(nameof(ApiConventionAnalyzerTest_NotApiController.Index)).First();
|
||||
|
||||
|
|
@ -84,7 +84,7 @@ namespace TestNamespace
|
|||
{
|
||||
// Arrange
|
||||
var compilation = await GetCompilation();
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
var type = compilation.GetTypeByMetadataName(typeof(ApiConventionAnalyzerTest_NotAction).FullName);
|
||||
var method = (IMethodSymbol)type.GetMembers(nameof(ApiConventionAnalyzerTest_NotAction.Index)).First();
|
||||
|
||||
|
|
@ -100,7 +100,7 @@ namespace TestNamespace
|
|||
{
|
||||
// Arrange
|
||||
var compilation = await GetCompilation();
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
var type = compilation.GetTypeByMetadataName(typeof(ApiConventionAnalyzerTest_Valid).FullName);
|
||||
var method = (IMethodSymbol)type.GetMembers(nameof(ApiConventionAnalyzerTest_Valid.Index)).First();
|
||||
|
||||
|
|
@ -116,7 +116,7 @@ namespace TestNamespace
|
|||
{
|
||||
// Arrange
|
||||
var compilation = await GetCompilation(nameof(IsApiControllerAction_ReturnsTrue_IfAttributeIsDeclaredOnAssembly));
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
var type = compilation.GetTypeByMetadataName(typeof(IsApiControllerAction_ReturnsTrue_IfAttributeIsDeclaredOnAssemblyController).FullName);
|
||||
var method = (IMethodSymbol)type.GetMembers(nameof(IsApiControllerAction_ReturnsTrue_IfAttributeIsDeclaredOnAssemblyController.Action)).First();
|
||||
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Mvc.Api.Analyzers\src\Microsoft.AspNetCore.Mvc.Api.Analyzers.csproj" />
|
||||
<Reference Include="Microsoft.AspNetCore.Mvc" />
|
||||
<ProjectReference Include="..\..\Mvc\ref\Microsoft.AspNetCore.Mvc.csproj" />
|
||||
<Reference Include="Microsoft.AspNetCore.Analyzer.Testing" />
|
||||
<Reference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" />
|
||||
</ItemGroup>
|
||||
|
|
|
|||
|
|
@ -431,7 +431,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
private async Task RunMatchTest(string methodName, string conventionMethodName, bool expected)
|
||||
{
|
||||
var compilation = await GetCompilationAsync();
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
var testController = compilation.GetTypeByMetadataName(TestControllerName);
|
||||
var testConvention = compilation.GetTypeByMetadataName(TestConventionName);
|
||||
|
|
@ -451,7 +451,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
// Arrange
|
||||
var expected = SymbolApiConventionNameMatchBehavior.Exact;
|
||||
var compilation = await GetCompilationAsync();
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
var testConvention = compilation.GetTypeByMetadataName(TestConventionName);
|
||||
var method = testConvention.GetMembers(nameof(TestConvention.MethodWithoutMatchBehavior)).First();
|
||||
|
|
@ -469,7 +469,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
// Arrange
|
||||
var expected = SymbolApiConventionNameMatchBehavior.Exact;
|
||||
var compilation = await GetCompilationAsync();
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
var testConvention = compilation.GetTypeByMetadataName(TestConventionName);
|
||||
var method = testConvention.GetMembers(nameof(TestConvention.MethodWithRandomAttributes)).First();
|
||||
|
|
@ -487,7 +487,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
// Arrange
|
||||
var expected = SymbolApiConventionNameMatchBehavior.Prefix;
|
||||
var compilation = await GetCompilationAsync();
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
var testConvention = compilation.GetTypeByMetadataName(TestConventionName);
|
||||
var method = testConvention.GetMembers(nameof(TestConvention.Get)).First();
|
||||
|
|
@ -505,7 +505,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
// Arrange
|
||||
var expected = SymbolApiConventionTypeMatchBehavior.AssignableFrom;
|
||||
var compilation = await GetCompilationAsync();
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
var testConvention = compilation.GetTypeByMetadataName(TestConventionName);
|
||||
var method = (IMethodSymbol)testConvention.GetMembers(nameof(TestConvention.Get)).First();
|
||||
|
|
@ -524,7 +524,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
// Arrange
|
||||
var expected = SymbolApiConventionTypeMatchBehavior.AssignableFrom;
|
||||
var compilation = await GetCompilationAsync();
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
var testConvention = compilation.GetTypeByMetadataName(TestConventionName);
|
||||
var method = (IMethodSymbol)testConvention.GetMembers(nameof(TestConvention.MethodParameterWithRandomAttributes)).First();
|
||||
|
|
@ -543,7 +543,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
// Arrange
|
||||
var expected = SymbolApiConventionTypeMatchBehavior.Any;
|
||||
var compilation = await GetCompilationAsync();
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
var testConvention = compilation.GetTypeByMetadataName(TestConventionName);
|
||||
var method = (IMethodSymbol)testConvention.GetMembers(nameof(TestConvention.MethodWithAnyTypeMatchBehaviorParameter)).First();
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
var compilation = await GetResponseMetadataCompilation();
|
||||
var controller = compilation.GetTypeByMetadataName($"{Namespace}.{nameof(GetResponseMetadata_ControllerWithoutConvention)}");
|
||||
var method = (IMethodSymbol)controller.GetMembers(nameof(GetResponseMetadata_ControllerWithoutConvention.GetPerson)).First();
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
// Act
|
||||
var result = SymbolApiResponseMetadataProvider.GetDeclaredResponseMetadata(symbolCache, method);
|
||||
|
|
@ -39,7 +39,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
var compilation = await GetResponseMetadataCompilation();
|
||||
var controller = compilation.GetTypeByMetadataName($"{Namespace}.{nameof(GetResponseMetadata_ControllerWithoutConvention)}");
|
||||
var method = (IMethodSymbol)controller.GetMembers(nameof(GetResponseMetadata_ControllerWithoutConvention.PostPerson)).First();
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
// Act
|
||||
var result = SymbolApiResponseMetadataProvider.GetDeclaredResponseMetadata(symbolCache, method);
|
||||
|
|
@ -57,7 +57,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
var compilation = await GetResponseMetadataCompilation();
|
||||
var controller = compilation.GetTypeByMetadataName($"{Namespace}.{nameof(GetResponseMetadata_ControllerActionWithAttributes)}");
|
||||
var method = (IMethodSymbol)controller.GetMembers(nameof(GetResponseMetadata_ControllerActionWithAttributes.ActionWithProducesAttribute)).First();
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
// Act
|
||||
var result = SymbolApiResponseMetadataProvider.GetDeclaredResponseMetadata(symbolCache, method);
|
||||
|
|
@ -75,7 +75,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
var compilation = await GetResponseMetadataCompilation();
|
||||
var controller = compilation.GetTypeByMetadataName($"{Namespace}.{nameof(GetResponseMetadata_ControllerActionWithAttributes)}");
|
||||
var method = (IMethodSymbol)controller.GetMembers(nameof(GetResponseMetadata_ControllerActionWithAttributes.ActionWithProducesResponseType_StatusCodeInConstructor)).First();
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
// Act
|
||||
var result = SymbolApiResponseMetadataProvider.GetDeclaredResponseMetadata(symbolCache, method);
|
||||
|
|
@ -98,7 +98,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
var compilation = await GetResponseMetadataCompilation();
|
||||
var controller = compilation.GetTypeByMetadataName($"{Namespace}.{nameof(GetResponseMetadata_ControllerActionWithAttributes)}");
|
||||
var method = (IMethodSymbol)controller.GetMembers(nameof(GetResponseMetadata_ControllerActionWithAttributes.ActionWithProducesResponseType_StatusCodeAndTypeInConstructor)).First();
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
// Act
|
||||
var result = SymbolApiResponseMetadataProvider.GetDeclaredResponseMetadata(symbolCache, method);
|
||||
|
|
@ -121,7 +121,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
var compilation = await GetResponseMetadataCompilation();
|
||||
var controller = compilation.GetTypeByMetadataName($"{Namespace}.{nameof(GetResponseMetadata_ControllerActionWithAttributes)}");
|
||||
var method = (IMethodSymbol)controller.GetMembers(nameof(GetResponseMetadata_ControllerActionWithAttributes.ActionWithProducesResponseType_StatusCodeInConstructorAndProperty)).First();
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
// Act
|
||||
var result = SymbolApiResponseMetadataProvider.GetDeclaredResponseMetadata(symbolCache, method);
|
||||
|
|
@ -144,7 +144,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
var compilation = await GetResponseMetadataCompilation();
|
||||
var controller = compilation.GetTypeByMetadataName($"{Namespace}.{nameof(GetResponseMetadata_ControllerActionWithAttributes)}");
|
||||
var method = (IMethodSymbol)controller.GetMembers(nameof(GetResponseMetadata_ControllerActionWithAttributes.ActionWithProducesResponseType_StatusCodeAndTypeInConstructorAndProperty)).First();
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
// Act
|
||||
var result = SymbolApiResponseMetadataProvider.GetDeclaredResponseMetadata(symbolCache, method);
|
||||
|
|
@ -167,7 +167,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
var compilation = await GetResponseMetadataCompilation();
|
||||
var controller = compilation.GetTypeByMetadataName($"{Namespace}.{nameof(GetResponseMetadata_ControllerActionWithAttributes)}");
|
||||
var method = (IMethodSymbol)controller.GetMembers(nameof(GetResponseMetadata_ControllerActionWithAttributes.ActionWithCustomProducesResponseTypeAttributeWithArguments)).First();
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
// Act
|
||||
var result = SymbolApiResponseMetadataProvider.GetDeclaredResponseMetadata(symbolCache, method);
|
||||
|
|
@ -189,7 +189,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
var compilation = await GetResponseMetadataCompilation();
|
||||
var controller = compilation.GetTypeByMetadataName($"{Namespace}.{nameof(GetResponseMetadata_ControllerActionWithAttributes)}");
|
||||
var method = (IMethodSymbol)controller.GetMembers(nameof(GetResponseMetadata_ControllerActionWithAttributes.GetResponseMetadata_ReturnsValuesFromApiConventionMethodAttribute)).First();
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
// Act
|
||||
var result = SymbolApiResponseMetadataProvider.GetDeclaredResponseMetadata(symbolCache, method);
|
||||
|
|
@ -220,7 +220,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
var compilation = await GetResponseMetadataCompilation();
|
||||
var controller = compilation.GetTypeByMetadataName($"{Namespace}.{nameof(GetResponseMetadata_ControllerActionWithAttributes)}");
|
||||
var method = (IMethodSymbol)controller.GetMembers(nameof(GetResponseMetadata_ControllerActionWithAttributes.GetResponseMetadata_WithProducesResponseTypeAndApiConventionMethod)).First();
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
// Act
|
||||
var result = SymbolApiResponseMetadataProvider.GetDeclaredResponseMetadata(symbolCache, method);
|
||||
|
|
@ -242,7 +242,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
var compilation = await GetResponseMetadataCompilation();
|
||||
var controller = compilation.GetTypeByMetadataName($"{Namespace}.{nameof(GetResponseMetadata_ControllerActionWithAttributes)}");
|
||||
var method = (IMethodSymbol)controller.GetMembers(nameof(GetResponseMetadata_ControllerActionWithAttributes.ActionWithCustomApiResponseMetadataProvider)).First();
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
// Act
|
||||
var result = SymbolApiResponseMetadataProvider.GetDeclaredResponseMetadata(symbolCache, method);
|
||||
|
|
@ -275,7 +275,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
var compilation = await GetResponseMetadataCompilation();
|
||||
var controller = compilation.GetTypeByMetadataName($"{Namespace}.{typeName}");
|
||||
var method = (IMethodSymbol)controller.GetMembers(methodName).First();
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
// Act
|
||||
var result = SymbolApiResponseMetadataProvider.GetDeclaredResponseMetadata(symbolCache, method);
|
||||
|
|
@ -298,7 +298,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
var compilation = await GetResponseMetadataCompilation();
|
||||
var controller = compilation.GetTypeByMetadataName(type.FullName);
|
||||
var method = (IMethodSymbol)controller.GetMembers().First();
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
// Act
|
||||
var result = SymbolApiResponseMetadataProvider.GetDeclaredResponseMetadata(symbolCache, method);
|
||||
|
|
@ -320,7 +320,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
var compilation = await GetResponseMetadataCompilation();
|
||||
var controller = compilation.GetTypeByMetadataName(type.FullName);
|
||||
var method = (IMethodSymbol)controller.GetMembers().First();
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
// Act
|
||||
var result = SymbolApiResponseMetadataProvider.GetDeclaredResponseMetadata(symbolCache, method);
|
||||
|
|
@ -410,7 +410,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
|
||||
var type = compilation.GetTypeByMetadataName(typeof(GetErrorResponseType_ReturnsProblemDetails_IfNoAttributeIsDiscoveredController).FullName);
|
||||
var method = (IMethodSymbol)type.GetMembers("Action").First();
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
// Act
|
||||
var result = SymbolApiResponseMetadataProvider.GetErrorResponseType(symbolCache, method);
|
||||
|
|
@ -428,7 +428,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
|
||||
var type = compilation.GetTypeByMetadataName(typeof(GetErrorResponseType_ReturnsTypeDefinedAtAssemblyController).FullName);
|
||||
var method = (IMethodSymbol)type.GetMembers("Action").First();
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
// Act
|
||||
var result = SymbolApiResponseMetadataProvider.GetErrorResponseType(symbolCache, method);
|
||||
|
|
@ -446,7 +446,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
|
||||
var type = compilation.GetTypeByMetadataName(typeof(GetErrorResponseType_ReturnsTypeDefinedAtControllerController).FullName);
|
||||
var method = (IMethodSymbol)type.GetMembers("Action").First();
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
// Act
|
||||
var result = SymbolApiResponseMetadataProvider.GetErrorResponseType(symbolCache, method);
|
||||
|
|
@ -464,7 +464,7 @@ namespace Microsoft.AspNetCore.Mvc.Api.Analyzers
|
|||
|
||||
var type = compilation.GetTypeByMetadataName(typeof(GetErrorResponseType_ReturnsTypeDefinedAtActionController).FullName);
|
||||
var method = (IMethodSymbol)type.GetMembers("Action").First();
|
||||
var symbolCache = new ApiControllerSymbolCache(compilation);
|
||||
Assert.True(ApiControllerSymbolCache.TryCreate(compilation, out var symbolCache));
|
||||
|
||||
// Act
|
||||
var result = SymbolApiResponseMetadataProvider.GetErrorResponseType(symbolCache, method);
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ namespace Microsoft.AspNetCore.Mvc
|
|||
[Microsoft.AspNetCore.Mvc.Infrastructure.DefaultStatusCodeAttribute(202)]
|
||||
public partial class AcceptedAtActionResult : Microsoft.AspNetCore.Mvc.ObjectResult
|
||||
{
|
||||
public AcceptedAtActionResult(string actionName, string controllerName, object routeValues, object value) : base (default(object)) { }
|
||||
public AcceptedAtActionResult(string actionName, string controllerName, object routeValues, [Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object value) : base (default(object)) { }
|
||||
public string ActionName { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
|
||||
public string ControllerName { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
|
||||
public Microsoft.AspNetCore.Routing.RouteValueDictionary RouteValues { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
|
||||
|
|
@ -48,8 +48,8 @@ namespace Microsoft.AspNetCore.Mvc
|
|||
[Microsoft.AspNetCore.Mvc.Infrastructure.DefaultStatusCodeAttribute(202)]
|
||||
public partial class AcceptedAtRouteResult : Microsoft.AspNetCore.Mvc.ObjectResult
|
||||
{
|
||||
public AcceptedAtRouteResult(object routeValues, object value) : base (default(object)) { }
|
||||
public AcceptedAtRouteResult(string routeName, object routeValues, object value) : base (default(object)) { }
|
||||
public AcceptedAtRouteResult(object routeValues, [Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object value) : base (default(object)) { }
|
||||
public AcceptedAtRouteResult(string routeName, object routeValues, [Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object value) : base (default(object)) { }
|
||||
public string RouteName { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
|
||||
public Microsoft.AspNetCore.Routing.RouteValueDictionary RouteValues { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
|
||||
public Microsoft.AspNetCore.Mvc.IUrlHelper UrlHelper { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
|
||||
|
|
@ -59,8 +59,8 @@ namespace Microsoft.AspNetCore.Mvc
|
|||
public partial class AcceptedResult : Microsoft.AspNetCore.Mvc.ObjectResult
|
||||
{
|
||||
public AcceptedResult() : base (default(object)) { }
|
||||
public AcceptedResult(string location, object value) : base (default(object)) { }
|
||||
public AcceptedResult(System.Uri locationUri, object value) : base (default(object)) { }
|
||||
public AcceptedResult(string location, [Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object value) : base (default(object)) { }
|
||||
public AcceptedResult(System.Uri locationUri, [Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object value) : base (default(object)) { }
|
||||
public string Location { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
|
||||
public override void OnFormatting(Microsoft.AspNetCore.Mvc.ActionContext context) { }
|
||||
}
|
||||
|
|
@ -151,8 +151,8 @@ namespace Microsoft.AspNetCore.Mvc
|
|||
[Microsoft.AspNetCore.Mvc.Infrastructure.DefaultStatusCodeAttribute(400)]
|
||||
public partial class BadRequestObjectResult : Microsoft.AspNetCore.Mvc.ObjectResult
|
||||
{
|
||||
public BadRequestObjectResult(Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary modelState) : base (default(object)) { }
|
||||
public BadRequestObjectResult(object error) : base (default(object)) { }
|
||||
public BadRequestObjectResult([Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary modelState) : base (default(object)) { }
|
||||
public BadRequestObjectResult([Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object error) : base (default(object)) { }
|
||||
}
|
||||
[Microsoft.AspNetCore.Mvc.Infrastructure.DefaultStatusCodeAttribute(400)]
|
||||
public partial class BadRequestResult : Microsoft.AspNetCore.Mvc.StatusCodeResult
|
||||
|
|
@ -226,8 +226,8 @@ namespace Microsoft.AspNetCore.Mvc
|
|||
[Microsoft.AspNetCore.Mvc.Infrastructure.DefaultStatusCodeAttribute(409)]
|
||||
public partial class ConflictObjectResult : Microsoft.AspNetCore.Mvc.ObjectResult
|
||||
{
|
||||
public ConflictObjectResult(Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary modelState) : base (default(object)) { }
|
||||
public ConflictObjectResult(object error) : base (default(object)) { }
|
||||
public ConflictObjectResult([Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary modelState) : base (default(object)) { }
|
||||
public ConflictObjectResult([Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object error) : base (default(object)) { }
|
||||
}
|
||||
[Microsoft.AspNetCore.Mvc.Infrastructure.DefaultStatusCodeAttribute(409)]
|
||||
public partial class ConflictResult : Microsoft.AspNetCore.Mvc.StatusCodeResult
|
||||
|
|
@ -278,43 +278,43 @@ namespace Microsoft.AspNetCore.Mvc
|
|||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.AcceptedResult Accepted() { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.AcceptedResult Accepted(object value) { throw null; }
|
||||
public virtual Microsoft.AspNetCore.Mvc.AcceptedResult Accepted([Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object value) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.AcceptedResult Accepted(string uri) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.AcceptedResult Accepted(string uri, object value) { throw null; }
|
||||
public virtual Microsoft.AspNetCore.Mvc.AcceptedResult Accepted(string uri, [Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object value) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.AcceptedResult Accepted(System.Uri uri) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.AcceptedResult Accepted(System.Uri uri, object value) { throw null; }
|
||||
public virtual Microsoft.AspNetCore.Mvc.AcceptedResult Accepted(System.Uri uri, [Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object value) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.AcceptedAtActionResult AcceptedAtAction(string actionName) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.AcceptedAtActionResult AcceptedAtAction(string actionName, object value) { throw null; }
|
||||
public virtual Microsoft.AspNetCore.Mvc.AcceptedAtActionResult AcceptedAtAction(string actionName, [Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object value) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.AcceptedAtActionResult AcceptedAtAction(string actionName, object routeValues, object value) { throw null; }
|
||||
public virtual Microsoft.AspNetCore.Mvc.AcceptedAtActionResult AcceptedAtAction(string actionName, object routeValues, [Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object value) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.AcceptedAtActionResult AcceptedAtAction(string actionName, string controllerName) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.AcceptedAtActionResult AcceptedAtAction(string actionName, string controllerName, object routeValues) { throw null; }
|
||||
public virtual Microsoft.AspNetCore.Mvc.AcceptedAtActionResult AcceptedAtAction(string actionName, string controllerName, [Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object routeValues) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.AcceptedAtActionResult AcceptedAtAction(string actionName, string controllerName, object routeValues, object value) { throw null; }
|
||||
public virtual Microsoft.AspNetCore.Mvc.AcceptedAtActionResult AcceptedAtAction(string actionName, string controllerName, object routeValues, [Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object value) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.AcceptedAtRouteResult AcceptedAtRoute(object routeValues) { throw null; }
|
||||
public virtual Microsoft.AspNetCore.Mvc.AcceptedAtRouteResult AcceptedAtRoute([Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object routeValues) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.AcceptedAtRouteResult AcceptedAtRoute(object routeValues, object value) { throw null; }
|
||||
public virtual Microsoft.AspNetCore.Mvc.AcceptedAtRouteResult AcceptedAtRoute(object routeValues, [Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object value) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.AcceptedAtRouteResult AcceptedAtRoute(string routeName) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.AcceptedAtRouteResult AcceptedAtRoute(string routeName, object routeValues) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.AcceptedAtRouteResult AcceptedAtRoute(string routeName, object routeValues, object value) { throw null; }
|
||||
public virtual Microsoft.AspNetCore.Mvc.AcceptedAtRouteResult AcceptedAtRoute(string routeName, object routeValues, [Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object value) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.BadRequestResult BadRequest() { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.BadRequestObjectResult BadRequest(Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary modelState) { throw null; }
|
||||
public virtual Microsoft.AspNetCore.Mvc.BadRequestObjectResult BadRequest([Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary modelState) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.BadRequestObjectResult BadRequest(object error) { throw null; }
|
||||
public virtual Microsoft.AspNetCore.Mvc.BadRequestObjectResult BadRequest([Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object error) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.ChallengeResult Challenge() { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
|
|
@ -326,9 +326,9 @@ namespace Microsoft.AspNetCore.Mvc
|
|||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.ConflictResult Conflict() { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.ConflictObjectResult Conflict(Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary modelState) { throw null; }
|
||||
public virtual Microsoft.AspNetCore.Mvc.ConflictObjectResult Conflict([Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary modelState) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.ConflictObjectResult Conflict(object error) { throw null; }
|
||||
public virtual Microsoft.AspNetCore.Mvc.ConflictObjectResult Conflict([Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object error) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.ContentResult Content(string content) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
|
|
@ -338,21 +338,21 @@ namespace Microsoft.AspNetCore.Mvc
|
|||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.ContentResult Content(string content, string contentType, System.Text.Encoding contentEncoding) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.CreatedResult Created(string uri, object value) { throw null; }
|
||||
public virtual Microsoft.AspNetCore.Mvc.CreatedResult Created(string uri, [Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object value) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.CreatedResult Created(System.Uri uri, object value) { throw null; }
|
||||
public virtual Microsoft.AspNetCore.Mvc.CreatedResult Created(System.Uri uri, [Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object value) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.CreatedAtActionResult CreatedAtAction(string actionName, object value) { throw null; }
|
||||
public virtual Microsoft.AspNetCore.Mvc.CreatedAtActionResult CreatedAtAction(string actionName, [Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object value) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.CreatedAtActionResult CreatedAtAction(string actionName, object routeValues, object value) { throw null; }
|
||||
public virtual Microsoft.AspNetCore.Mvc.CreatedAtActionResult CreatedAtAction(string actionName, object routeValues, [Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object value) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.CreatedAtActionResult CreatedAtAction(string actionName, string controllerName, object routeValues, object value) { throw null; }
|
||||
public virtual Microsoft.AspNetCore.Mvc.CreatedAtActionResult CreatedAtAction(string actionName, string controllerName, object routeValues, [Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object value) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.CreatedAtRouteResult CreatedAtRoute(object routeValues, object value) { throw null; }
|
||||
public virtual Microsoft.AspNetCore.Mvc.CreatedAtRouteResult CreatedAtRoute(object routeValues, [Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object value) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.CreatedAtRouteResult CreatedAtRoute(string routeName, object value) { throw null; }
|
||||
public virtual Microsoft.AspNetCore.Mvc.CreatedAtRouteResult CreatedAtRoute(string routeName, [Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object value) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.CreatedAtRouteResult CreatedAtRoute(string routeName, object routeValues, object value) { throw null; }
|
||||
public virtual Microsoft.AspNetCore.Mvc.CreatedAtRouteResult CreatedAtRoute(string routeName, object routeValues, [Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object value) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.FileContentResult File(byte[] fileContents, string contentType) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
|
|
@ -422,11 +422,11 @@ namespace Microsoft.AspNetCore.Mvc
|
|||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.NotFoundResult NotFound() { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.NotFoundObjectResult NotFound(object value) { throw null; }
|
||||
public virtual Microsoft.AspNetCore.Mvc.NotFoundObjectResult NotFound([Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object value) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.OkResult Ok() { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.OkObjectResult Ok(object value) { throw null; }
|
||||
public virtual Microsoft.AspNetCore.Mvc.OkObjectResult Ok([Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object value) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.PhysicalFileResult PhysicalFile(string physicalPath, string contentType) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
|
|
@ -540,9 +540,9 @@ namespace Microsoft.AspNetCore.Mvc
|
|||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.SignOutResult SignOut(params string[] authenticationSchemes) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.StatusCodeResult StatusCode(int statusCode) { throw null; }
|
||||
public virtual Microsoft.AspNetCore.Mvc.StatusCodeResult StatusCode([Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultStatusCodeAttribute]int statusCode) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.ObjectResult StatusCode(int statusCode, object value) { throw null; }
|
||||
public virtual Microsoft.AspNetCore.Mvc.ObjectResult StatusCode([Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultStatusCodeAttribute]int statusCode, [Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object value) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
[System.Diagnostics.DebuggerStepThroughAttribute]
|
||||
public virtual System.Threading.Tasks.Task<bool> TryUpdateModelAsync(object model, System.Type modelType, string prefix) { throw null; }
|
||||
|
|
@ -572,19 +572,19 @@ namespace Microsoft.AspNetCore.Mvc
|
|||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.UnauthorizedResult Unauthorized() { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.UnauthorizedObjectResult Unauthorized(object value) { throw null; }
|
||||
public virtual Microsoft.AspNetCore.Mvc.UnauthorizedObjectResult Unauthorized([Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object value) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.UnprocessableEntityResult UnprocessableEntity() { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.UnprocessableEntityObjectResult UnprocessableEntity(Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary modelState) { throw null; }
|
||||
public virtual Microsoft.AspNetCore.Mvc.UnprocessableEntityObjectResult UnprocessableEntity([Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary modelState) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.UnprocessableEntityObjectResult UnprocessableEntity(object error) { throw null; }
|
||||
public virtual Microsoft.AspNetCore.Mvc.UnprocessableEntityObjectResult UnprocessableEntity([Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object error) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.ActionResult ValidationProblem() { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.ActionResult ValidationProblem(Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary modelStateDictionary) { throw null; }
|
||||
public virtual Microsoft.AspNetCore.Mvc.ActionResult ValidationProblem([Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary modelStateDictionary) { throw null; }
|
||||
[Microsoft.AspNetCore.Mvc.NonActionAttribute]
|
||||
public virtual Microsoft.AspNetCore.Mvc.ActionResult ValidationProblem(Microsoft.AspNetCore.Mvc.ValidationProblemDetails descriptor) { throw null; }
|
||||
public virtual Microsoft.AspNetCore.Mvc.ActionResult ValidationProblem([Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]Microsoft.AspNetCore.Mvc.ValidationProblemDetails descriptor) { throw null; }
|
||||
}
|
||||
public partial class ControllerContext : Microsoft.AspNetCore.Mvc.ActionContext
|
||||
{
|
||||
|
|
@ -601,7 +601,7 @@ namespace Microsoft.AspNetCore.Mvc
|
|||
[Microsoft.AspNetCore.Mvc.Infrastructure.DefaultStatusCodeAttribute(201)]
|
||||
public partial class CreatedAtActionResult : Microsoft.AspNetCore.Mvc.ObjectResult
|
||||
{
|
||||
public CreatedAtActionResult(string actionName, string controllerName, object routeValues, object value) : base (default(object)) { }
|
||||
public CreatedAtActionResult(string actionName, string controllerName, object routeValues, [Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object value) : base (default(object)) { }
|
||||
public string ActionName { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
|
||||
public string ControllerName { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
|
||||
public Microsoft.AspNetCore.Routing.RouteValueDictionary RouteValues { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
|
||||
|
|
@ -611,8 +611,8 @@ namespace Microsoft.AspNetCore.Mvc
|
|||
[Microsoft.AspNetCore.Mvc.Infrastructure.DefaultStatusCodeAttribute(201)]
|
||||
public partial class CreatedAtRouteResult : Microsoft.AspNetCore.Mvc.ObjectResult
|
||||
{
|
||||
public CreatedAtRouteResult(object routeValues, object value) : base (default(object)) { }
|
||||
public CreatedAtRouteResult(string routeName, object routeValues, object value) : base (default(object)) { }
|
||||
public CreatedAtRouteResult(object routeValues, [Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object value) : base (default(object)) { }
|
||||
public CreatedAtRouteResult(string routeName, object routeValues, [Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object value) : base (default(object)) { }
|
||||
public string RouteName { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
|
||||
public Microsoft.AspNetCore.Routing.RouteValueDictionary RouteValues { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
|
||||
public Microsoft.AspNetCore.Mvc.IUrlHelper UrlHelper { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
|
||||
|
|
@ -914,7 +914,7 @@ namespace Microsoft.AspNetCore.Mvc
|
|||
[Microsoft.AspNetCore.Mvc.Infrastructure.DefaultStatusCodeAttribute(404)]
|
||||
public partial class NotFoundObjectResult : Microsoft.AspNetCore.Mvc.ObjectResult
|
||||
{
|
||||
public NotFoundObjectResult(object value) : base (default(object)) { }
|
||||
public NotFoundObjectResult([Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object value) : base (default(object)) { }
|
||||
}
|
||||
[Microsoft.AspNetCore.Mvc.Infrastructure.DefaultStatusCodeAttribute(404)]
|
||||
public partial class NotFoundResult : Microsoft.AspNetCore.Mvc.StatusCodeResult
|
||||
|
|
@ -928,6 +928,7 @@ namespace Microsoft.AspNetCore.Mvc
|
|||
public System.Type DeclaredType { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
|
||||
public Microsoft.AspNetCore.Mvc.Formatters.FormatterCollection<Microsoft.AspNetCore.Mvc.Formatters.IOutputFormatter> Formatters { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
|
||||
public int? StatusCode { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
|
||||
[Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]
|
||||
public object Value { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
|
||||
public override System.Threading.Tasks.Task ExecuteResultAsync(Microsoft.AspNetCore.Mvc.ActionContext context) { throw null; }
|
||||
public virtual void OnFormatting(Microsoft.AspNetCore.Mvc.ActionContext context) { }
|
||||
|
|
@ -1167,7 +1168,7 @@ namespace Microsoft.AspNetCore.Mvc
|
|||
}
|
||||
public partial class StatusCodeResult : Microsoft.AspNetCore.Mvc.ActionResult, Microsoft.AspNetCore.Mvc.IActionResult, Microsoft.AspNetCore.Mvc.Infrastructure.IClientErrorActionResult, Microsoft.AspNetCore.Mvc.Infrastructure.IStatusCodeActionResult
|
||||
{
|
||||
public StatusCodeResult(int statusCode) { }
|
||||
public StatusCodeResult([Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultStatusCodeAttribute]int statusCode) { }
|
||||
int? Microsoft.AspNetCore.Mvc.Infrastructure.IStatusCodeActionResult.StatusCode { get { throw null; } }
|
||||
public int StatusCode { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } }
|
||||
public override void ExecuteResult(Microsoft.AspNetCore.Mvc.ActionContext context) { }
|
||||
|
|
@ -1186,7 +1187,7 @@ namespace Microsoft.AspNetCore.Mvc
|
|||
[Microsoft.AspNetCore.Mvc.Infrastructure.DefaultStatusCodeAttribute(401)]
|
||||
public partial class UnauthorizedObjectResult : Microsoft.AspNetCore.Mvc.ObjectResult
|
||||
{
|
||||
public UnauthorizedObjectResult(object value) : base (default(object)) { }
|
||||
public UnauthorizedObjectResult([Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object value) : base (default(object)) { }
|
||||
}
|
||||
[Microsoft.AspNetCore.Mvc.Infrastructure.DefaultStatusCodeAttribute(401)]
|
||||
public partial class UnauthorizedResult : Microsoft.AspNetCore.Mvc.StatusCodeResult
|
||||
|
|
@ -1196,8 +1197,8 @@ namespace Microsoft.AspNetCore.Mvc
|
|||
[Microsoft.AspNetCore.Mvc.Infrastructure.DefaultStatusCodeAttribute(422)]
|
||||
public partial class UnprocessableEntityObjectResult : Microsoft.AspNetCore.Mvc.ObjectResult
|
||||
{
|
||||
public UnprocessableEntityObjectResult(Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary modelState) : base (default(object)) { }
|
||||
public UnprocessableEntityObjectResult(object error) : base (default(object)) { }
|
||||
public UnprocessableEntityObjectResult([Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary modelState) : base (default(object)) { }
|
||||
public UnprocessableEntityObjectResult([Microsoft.AspNetCore.Mvc.Infrastructure.ActionResultObjectValueAttribute]object error) : base (default(object)) { }
|
||||
}
|
||||
[Microsoft.AspNetCore.Mvc.Infrastructure.DefaultStatusCodeAttribute(422)]
|
||||
public partial class UnprocessableEntityResult : Microsoft.AspNetCore.Mvc.StatusCodeResult
|
||||
|
|
@ -1922,6 +1923,16 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
|||
public abstract Microsoft.AspNetCore.Mvc.Infrastructure.ActionDescriptorCollection ActionDescriptors { get; }
|
||||
public abstract Microsoft.Extensions.Primitives.IChangeToken GetChangeToken();
|
||||
}
|
||||
[System.AttributeUsageAttribute(System.AttributeTargets.Parameter | System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)]
|
||||
public sealed partial class ActionResultObjectValueAttribute : System.Attribute
|
||||
{
|
||||
public ActionResultObjectValueAttribute() { }
|
||||
}
|
||||
[System.AttributeUsageAttribute(System.AttributeTargets.Parameter, AllowMultiple=false, Inherited=false)]
|
||||
public sealed partial class ActionResultStatusCodeAttribute : System.Attribute
|
||||
{
|
||||
public ActionResultStatusCodeAttribute() { }
|
||||
}
|
||||
public partial class CompatibilitySwitch<TValue> : Microsoft.AspNetCore.Mvc.Infrastructure.ICompatibilitySwitch where TValue : struct
|
||||
{
|
||||
public CompatibilitySwitch(string name) { }
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
|||
/// ObjectResult { [ActionResultObjectValueAttribute] public object Value { get; set; } }
|
||||
/// </example>
|
||||
[AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Property, AllowMultiple = false, Inherited = false)]
|
||||
internal sealed class ActionResultObjectValueAttribute : Attribute
|
||||
public sealed class ActionResultObjectValueAttribute : Attribute
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
|
|||
/// StatusCodeResult([ActionResultStatusCodeParameter] int statusCode)
|
||||
/// </example>
|
||||
[AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)]
|
||||
internal sealed class ActionResultStatusCodeAttribute : Attribute
|
||||
public sealed class ActionResultStatusCodeAttribute : Attribute
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,73 @@
|
|||
{
|
||||
"solution": {
|
||||
"path": "Mvc.sln",
|
||||
"projects": [
|
||||
"test\\WebSites\\BasicWebSite\\BasicWebSite.csproj",
|
||||
"test\\WebSites\\RoutingWebSite\\Mvc.RoutingWebSite.csproj",
|
||||
"test\\WebSites\\RazorWebSite\\RazorWebSite.csproj",
|
||||
"test\\WebSites\\FormatterWebSite\\FormatterWebSite.csproj",
|
||||
"test\\WebSites\\ApiExplorerWebSite\\ApiExplorerWebSite.csproj",
|
||||
"test\\WebSites\\VersioningWebSite\\VersioningWebSite.csproj",
|
||||
"test\\WebSites\\TagHelpersWebSite\\TagHelpersWebSite.csproj",
|
||||
"test\\WebSites\\FilesWebSite\\FilesWebSite.csproj",
|
||||
"test\\WebSites\\ApplicationModelWebSite\\ApplicationModelWebSite.csproj",
|
||||
"test\\WebSites\\HtmlGenerationWebSite\\HtmlGenerationWebSite.csproj",
|
||||
"test\\WebSites\\ErrorPageMiddlewareWebSite\\ErrorPageMiddlewareWebSite.csproj",
|
||||
"test\\WebSites\\XmlFormattersWebSite\\XmlFormattersWebSite.csproj",
|
||||
"test\\WebSites\\ControllersFromServicesWebSite\\ControllersFromServicesWebSite.csproj",
|
||||
"test\\WebSites\\ControllersFromServicesClassLibrary\\ControllersFromServicesClassLibrary.csproj",
|
||||
"test\\WebSites\\CorsWebSite\\CorsWebSite.csproj",
|
||||
"samples\\MvcSandbox\\MvcSandbox.csproj",
|
||||
"test\\WebSites\\SimpleWebSite\\SimpleWebSite.csproj",
|
||||
"test\\WebSites\\SecurityWebSite\\SecurityWebSite.csproj",
|
||||
"test\\WebSites\\RazorPagesWebSite\\RazorPagesWebSite.csproj",
|
||||
"benchmarks\\Microsoft.AspNetCore.Mvc.Performance\\Microsoft.AspNetCore.Mvc.Performance.csproj",
|
||||
"test\\WebSites\\RazorBuildWebSite\\RazorBuildWebSite.csproj",
|
||||
"test\\WebSites\\RazorBuildWebSite.Views\\RazorBuildWebSite.Views.csproj",
|
||||
"Mvc.Analyzers\\src\\Microsoft.AspNetCore.Mvc.Analyzers.csproj",
|
||||
"Mvc.Analyzers\\test\\Mvc.Analyzers.Test.csproj",
|
||||
"test\\WebSites\\RazorPagesClassLibrary\\RazorPagesClassLibrary.csproj",
|
||||
"shared\\Mvc.Views.TestCommon\\Microsoft.AspNetCore.Mvc.Views.TestCommon.csproj",
|
||||
"Mvc.Api.Analyzers\\test\\Mvc.Api.Analyzers.Test.csproj",
|
||||
"Mvc.Api.Analyzers\\src\\Microsoft.AspNetCore.Mvc.Api.Analyzers.csproj",
|
||||
"test\\WebSites\\GenericHostWebSite\\GenericHostWebSite.csproj",
|
||||
"Mvc\\src\\Microsoft.AspNetCore.Mvc.csproj",
|
||||
"Mvc\\test\\Microsoft.AspNetCore.Mvc.Test.csproj",
|
||||
"Mvc.Abstractions\\src\\Microsoft.AspNetCore.Mvc.Abstractions.csproj",
|
||||
"Mvc.Abstractions\\test\\Microsoft.AspNetCore.Mvc.Abstractions.Test.csproj",
|
||||
"Mvc.ApiExplorer\\src\\Microsoft.AspNetCore.Mvc.ApiExplorer.csproj",
|
||||
"Mvc.ApiExplorer\\test\\Microsoft.AspNetCore.Mvc.ApiExplorer.Test.csproj",
|
||||
"Mvc.Core\\src\\Microsoft.AspNetCore.Mvc.Core.csproj",
|
||||
"Mvc.Core\\test\\Microsoft.AspNetCore.Mvc.Core.Test.csproj",
|
||||
"Mvc.Cors\\src\\Microsoft.AspNetCore.Mvc.Cors.csproj",
|
||||
"Mvc.Cors\\test\\Microsoft.AspNetCore.Mvc.Cors.Test.csproj",
|
||||
"Mvc.DataAnnotations\\src\\Microsoft.AspNetCore.Mvc.DataAnnotations.csproj",
|
||||
"Mvc.DataAnnotations\\test\\Microsoft.AspNetCore.Mvc.DataAnnotations.Test.csproj",
|
||||
"Mvc.Formatters.Json\\src\\Microsoft.AspNetCore.Mvc.Formatters.Json.csproj",
|
||||
"Mvc.Formatters.Xml\\src\\Microsoft.AspNetCore.Mvc.Formatters.Xml.csproj",
|
||||
"Mvc.Formatters.Xml\\test\\Microsoft.AspNetCore.Mvc.Formatters.Xml.Test.csproj",
|
||||
"Mvc.Localization\\src\\Microsoft.AspNetCore.Mvc.Localization.csproj",
|
||||
"Mvc.Localization\\test\\Microsoft.AspNetCore.Mvc.Localization.Test.csproj",
|
||||
"Mvc.Razor\\src\\Microsoft.AspNetCore.Mvc.Razor.csproj",
|
||||
"Mvc.Razor\\test\\Microsoft.AspNetCore.Mvc.Razor.Test.csproj",
|
||||
"Mvc.RazorPages\\src\\Microsoft.AspNetCore.Mvc.RazorPages.csproj",
|
||||
"Mvc.RazorPages\\test\\Microsoft.AspNetCore.Mvc.RazorPages.Test.csproj",
|
||||
"Mvc.TagHelpers\\src\\Microsoft.AspNetCore.Mvc.TagHelpers.csproj",
|
||||
"Mvc.TagHelpers\\test\\Microsoft.AspNetCore.Mvc.TagHelpers.Test.csproj",
|
||||
"Mvc.ViewFeatures\\src\\Microsoft.AspNetCore.Mvc.ViewFeatures.csproj",
|
||||
"Mvc.ViewFeatures\\test\\Microsoft.AspNetCore.Mvc.ViewFeatures.Test.csproj",
|
||||
"test\\Mvc.FunctionalTests\\Microsoft.AspNetCore.Mvc.FunctionalTests.csproj",
|
||||
"test\\Mvc.IntegrationTests\\Microsoft.AspNetCore.Mvc.IntegrationTests.csproj",
|
||||
"shared\\Mvc.TestDiagnosticListener\\Microsoft.AspNetCore.Mvc.TestDiagnosticListener.csproj",
|
||||
"Mvc.Testing\\src\\Microsoft.AspNetCore.Mvc.Testing.csproj",
|
||||
"shared\\Mvc.Core.TestCommon\\Microsoft.AspNetCore.Mvc.Core.TestCommon.csproj",
|
||||
"Mvc.NewtonsoftJson\\src\\Microsoft.AspNetCore.Mvc.NewtonsoftJson.csproj",
|
||||
"Mvc.NewtonsoftJson\\test\\Microsoft.AspNetCore.Mvc.NewtonsoftJson.Test.csproj",
|
||||
"Mvc.Razor.RuntimeCompilation\\src\\Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.csproj",
|
||||
"Mvc.Razor.RuntimeCompilation\\test\\Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.Test.csproj",
|
||||
"test\\WebSites\\RazorBuildWebSite.PrecompiledViews\\RazorBuildWebSite.PrecompiledViews.csproj",
|
||||
"Mvc.Components.Prerendering\\src\\Microsoft.AspNetCore.Mvc.Components.Prerendering.csproj",
|
||||
"Mvc.Components.Prerendering\\test\\Microsoft.AspNetCore.Mvc.Components.Prerendering.Test.csproj"
|
||||
]
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue