From f5709b40809507f3962a9abc2fbde23e66eb6fdc Mon Sep 17 00:00:00 2001 From: Pranav K Date: Tue, 23 Jun 2020 15:56:25 -0700 Subject: [PATCH] Add nullable annotations to Microsoft.AspNetCore.Mvc.Abstractions (#22993) * Add nullable annotations to Microsoft.AspNetCore.Mvc.Abstractions Contributes to https://github.com/dotnet/aspnetcore/issues/5680 * Changes per PR comments * Changes per PR comments * Fixup --- ...crosoft.AspNetCore.Mvc.Abstractions.csproj | 1 + ....AspNetCore.Mvc.Abstractions.netcoreapp.cs | 189 +++++++++--------- .../src/Abstractions/ActionDescriptor.cs | 16 +- .../ActionDescriptorExtensions.cs | 5 +- .../ActionInvokerProviderContext.cs | 2 +- .../src/Abstractions/ParameterDescriptor.cs | 6 +- .../ActionConstraintContext.cs | 7 +- .../ActionConstraints/ActionConstraintItem.cs | 2 +- src/Mvc/Mvc.Abstractions/src/ActionContext.cs | 28 +-- .../src/ApiExplorer/ApiDescription.cs | 8 +- .../ApiExplorer/ApiParameterDescription.cs | 16 +- .../src/ApiExplorer/ApiParameterRouteInfo.cs | 4 +- .../src/ApiExplorer/ApiRequestFormat.cs | 4 +- .../src/ApiExplorer/ApiResponseFormat.cs | 4 +- .../src/ApiExplorer/ApiResponseType.cs | 4 +- .../src/Filters/ActionExecutedContext.cs | 10 +- .../src/Filters/ActionExecutingContext.cs | 2 +- .../src/Filters/AuthorizationFilterContext.cs | 2 +- .../src/Filters/ExceptionContext.cs | 10 +- .../src/Filters/FilterContext.cs | 4 +- .../src/Filters/FilterItem.cs | 4 +- .../src/Filters/ResourceExecutedContext.cs | 10 +- .../src/Filters/ResourceExecutingContext.cs | 2 +- .../src/Filters/ResultExecutedContext.cs | 8 +- .../src/Formatters/FormatterCollection.cs | 2 +- .../src/Formatters/InputFormatterResult.cs | 2 +- .../OutputFormatterCanWriteContext.cs | 4 +- ...crosoft.AspNetCore.Mvc.Abstractions.csproj | 5 +- .../src/ModelBinding/BindingInfo.cs | 16 +- .../src/ModelBinding/BindingSource.cs | 10 +- .../ModelBinding/CompositeBindingSource.cs | 2 +- .../ModelBinding/IBindingSourceMetadata.cs | 2 +- .../Metadata/ModelBindingMessageProvider.cs | 22 +- .../Metadata/ModelMetadataIdentity.cs | 25 ++- .../ModelBinderProviderContext.cs | 2 +- .../src/ModelBinding/ModelBindingContext.cs | 4 +- .../src/ModelBinding/ModelBindingResult.cs | 15 +- .../src/ModelBinding/ModelError.cs | 6 +- .../src/ModelBinding/ModelMetadata.cs | 28 +-- .../ModelBinding/ModelPropertyCollection.cs | 2 +- .../src/ModelBinding/ModelStateDictionary.cs | 57 +++--- .../src/ModelBinding/ModelStateEntry.cs | 10 +- .../Validation/ClientValidatorItem.cs | 4 +- .../Validation/ValidationEntry.cs | 6 +- .../Validation/ValidationStateDictionary.cs | 43 ++-- .../Validation/ValidationStateEntry.cs | 6 +- .../ModelBinding/Validation/ValidatorItem.cs | 4 +- .../src/ModelBinding/ValueProviderResult.cs | 4 +- .../src/Routing/AttributeRouteInfo.cs | 4 +- .../src/Routing/UrlActionContext.cs | 12 +- .../src/Routing/UrlRouteContext.cs | 10 +- .../src/DefaultApiDescriptionProvider.cs | 4 +- .../src/ModelBinding/ModelBinderFactory.cs | 4 +- .../Mvc.Core/src/Routing/AttributeRoute.cs | 4 +- src/Mvc/Mvc.Razor/src/RazorPageActivator.cs | 4 +- src/Mvc/Mvc.Razor/src/ViewLocationCacheKey.cs | 4 +- .../Mvc.TagHelpers/src/Cache/CacheTagKey.cs | 14 +- .../Mvc.TagHelpers/src/GlobbingUrlBuilder.cs | 5 +- .../src/LambdaExpressionComparer.cs | 4 +- .../src/MemberExpressionCacheKeyComparer.cs | 5 +- .../ClosedGenericMatcher.cs | 11 +- 61 files changed, 344 insertions(+), 370 deletions(-) diff --git a/src/Mvc/Mvc.Abstractions/ref/Microsoft.AspNetCore.Mvc.Abstractions.csproj b/src/Mvc/Mvc.Abstractions/ref/Microsoft.AspNetCore.Mvc.Abstractions.csproj index ce0671621e..2ae7b2695e 100644 --- a/src/Mvc/Mvc.Abstractions/ref/Microsoft.AspNetCore.Mvc.Abstractions.csproj +++ b/src/Mvc/Mvc.Abstractions/ref/Microsoft.AspNetCore.Mvc.Abstractions.csproj @@ -2,6 +2,7 @@ $(DefaultNetCoreTargetFramework) + annotations diff --git a/src/Mvc/Mvc.Abstractions/ref/Microsoft.AspNetCore.Mvc.Abstractions.netcoreapp.cs b/src/Mvc/Mvc.Abstractions/ref/Microsoft.AspNetCore.Mvc.Abstractions.netcoreapp.cs index 84ca15ad39..267c99ef8a 100644 --- a/src/Mvc/Mvc.Abstractions/ref/Microsoft.AspNetCore.Mvc.Abstractions.netcoreapp.cs +++ b/src/Mvc/Mvc.Abstractions/ref/Microsoft.AspNetCore.Mvc.Abstractions.netcoreapp.cs @@ -33,10 +33,10 @@ namespace Microsoft.AspNetCore.Mvc.Abstractions public partial class ActionDescriptor { public ActionDescriptor() { } - public System.Collections.Generic.IList ActionConstraints { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } - public Microsoft.AspNetCore.Mvc.Routing.AttributeRouteInfo AttributeRouteInfo { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public System.Collections.Generic.IList? ActionConstraints { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public Microsoft.AspNetCore.Mvc.Routing.AttributeRouteInfo? AttributeRouteInfo { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } public System.Collections.Generic.IList BoundProperties { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } - public virtual string DisplayName { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public virtual string? DisplayName { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } public System.Collections.Generic.IList EndpointMetadata { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } public System.Collections.Generic.IList FilterDescriptors { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } public string Id { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } @@ -58,7 +58,7 @@ namespace Microsoft.AspNetCore.Mvc.Abstractions { public ActionInvokerProviderContext(Microsoft.AspNetCore.Mvc.ActionContext actionContext) { } public Microsoft.AspNetCore.Mvc.ActionContext ActionContext { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } - public Microsoft.AspNetCore.Mvc.Abstractions.IActionInvoker Result { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public Microsoft.AspNetCore.Mvc.Abstractions.IActionInvoker? Result { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } } public partial interface IActionDescriptorProvider { @@ -143,8 +143,8 @@ namespace Microsoft.AspNetCore.Mvc.ApiExplorer { public ApiDescription() { } public Microsoft.AspNetCore.Mvc.Abstractions.ActionDescriptor ActionDescriptor { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } - public string GroupName { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } - public string HttpMethod { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public string? GroupName { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public string? HttpMethod { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } public System.Collections.Generic.IList ParameterDescriptions { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } public System.Collections.Generic.IDictionary Properties { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } public string RelativePath { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } @@ -160,21 +160,21 @@ namespace Microsoft.AspNetCore.Mvc.ApiExplorer public partial class ApiParameterDescription { public ApiParameterDescription() { } - public Microsoft.AspNetCore.Mvc.ModelBinding.BindingInfo BindingInfo { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } - public object DefaultValue { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public Microsoft.AspNetCore.Mvc.ModelBinding.BindingInfo? BindingInfo { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public object? DefaultValue { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } public bool IsRequired { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } public Microsoft.AspNetCore.Mvc.ModelBinding.ModelMetadata ModelMetadata { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } public string Name { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } public Microsoft.AspNetCore.Mvc.Abstractions.ParameterDescriptor ParameterDescriptor { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } - public Microsoft.AspNetCore.Mvc.ApiExplorer.ApiParameterRouteInfo RouteInfo { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public Microsoft.AspNetCore.Mvc.ApiExplorer.ApiParameterRouteInfo? RouteInfo { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } public Microsoft.AspNetCore.Mvc.ModelBinding.BindingSource Source { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } public System.Type Type { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } } public partial class ApiParameterRouteInfo { public ApiParameterRouteInfo() { } - public System.Collections.Generic.IEnumerable Constraints { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } - public object DefaultValue { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public System.Collections.Generic.IEnumerable? Constraints { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public object? DefaultValue { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } public bool IsOptional { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } } public partial class ApiRequestFormat @@ -194,9 +194,9 @@ namespace Microsoft.AspNetCore.Mvc.ApiExplorer public ApiResponseType() { } public System.Collections.Generic.IList ApiResponseFormats { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } public bool IsDefaultResponse { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } - public Microsoft.AspNetCore.Mvc.ModelBinding.ModelMetadata ModelMetadata { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public Microsoft.AspNetCore.Mvc.ModelBinding.ModelMetadata? ModelMetadata { [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 { } } - public System.Type Type { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public System.Type? Type { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } } public partial interface IApiDescriptionProvider { @@ -218,8 +218,8 @@ namespace Microsoft.AspNetCore.Mvc.Filters public ActionExecutedContext(Microsoft.AspNetCore.Mvc.ActionContext actionContext, System.Collections.Generic.IList filters, object controller) : base (default(Microsoft.AspNetCore.Mvc.ActionContext), default(System.Collections.Generic.IList)) { } public virtual bool Canceled { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } public virtual object Controller { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } - public virtual System.Exception Exception { get { throw null; } set { } } - public virtual System.Runtime.ExceptionServices.ExceptionDispatchInfo ExceptionDispatchInfo { get { throw null; } set { } } + public virtual System.Exception? Exception { get { throw null; } set { } } + public virtual System.Runtime.ExceptionServices.ExceptionDispatchInfo? ExceptionDispatchInfo { get { throw null; } set { } } public virtual bool ExceptionHandled { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } public virtual Microsoft.AspNetCore.Mvc.IActionResult Result { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } } @@ -228,26 +228,27 @@ namespace Microsoft.AspNetCore.Mvc.Filters public ActionExecutingContext(Microsoft.AspNetCore.Mvc.ActionContext actionContext, System.Collections.Generic.IList filters, System.Collections.Generic.IDictionary actionArguments, object controller) : base (default(Microsoft.AspNetCore.Mvc.ActionContext), default(System.Collections.Generic.IList)) { } public virtual System.Collections.Generic.IDictionary ActionArguments { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } public virtual object Controller { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } - public virtual Microsoft.AspNetCore.Mvc.IActionResult Result { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public virtual Microsoft.AspNetCore.Mvc.IActionResult? Result { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } } public delegate System.Threading.Tasks.Task ActionExecutionDelegate(); public partial class AuthorizationFilterContext : Microsoft.AspNetCore.Mvc.Filters.FilterContext { public AuthorizationFilterContext(Microsoft.AspNetCore.Mvc.ActionContext actionContext, System.Collections.Generic.IList filters) : base (default(Microsoft.AspNetCore.Mvc.ActionContext), default(System.Collections.Generic.IList)) { } - public virtual Microsoft.AspNetCore.Mvc.IActionResult Result { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public virtual Microsoft.AspNetCore.Mvc.IActionResult? Result { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } } public partial class ExceptionContext : Microsoft.AspNetCore.Mvc.Filters.FilterContext { public ExceptionContext(Microsoft.AspNetCore.Mvc.ActionContext actionContext, System.Collections.Generic.IList filters) : base (default(Microsoft.AspNetCore.Mvc.ActionContext), default(System.Collections.Generic.IList)) { } public virtual System.Exception Exception { get { throw null; } set { } } - public virtual System.Runtime.ExceptionServices.ExceptionDispatchInfo ExceptionDispatchInfo { get { throw null; } set { } } + public virtual System.Runtime.ExceptionServices.ExceptionDispatchInfo? ExceptionDispatchInfo { get { throw null; } set { } } public virtual bool ExceptionHandled { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } - public virtual Microsoft.AspNetCore.Mvc.IActionResult Result { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public virtual Microsoft.AspNetCore.Mvc.IActionResult? Result { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } } public abstract partial class FilterContext : Microsoft.AspNetCore.Mvc.ActionContext { public FilterContext(Microsoft.AspNetCore.Mvc.ActionContext actionContext, System.Collections.Generic.IList filters) { } public virtual System.Collections.Generic.IList Filters { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } + [return: System.Diagnostics.CodeAnalysis.MaybeNullAttribute] public TMetadata FindEffectivePolicy() where TMetadata : Microsoft.AspNetCore.Mvc.Filters.IFilterMetadata { throw null; } public bool IsEffectivePolicy(TMetadata policy) where TMetadata : Microsoft.AspNetCore.Mvc.Filters.IFilterMetadata { throw null; } } @@ -349,15 +350,15 @@ namespace Microsoft.AspNetCore.Mvc.Filters { public ResourceExecutedContext(Microsoft.AspNetCore.Mvc.ActionContext actionContext, System.Collections.Generic.IList filters) : base (default(Microsoft.AspNetCore.Mvc.ActionContext), default(System.Collections.Generic.IList)) { } public virtual bool Canceled { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } - public virtual System.Exception Exception { get { throw null; } set { } } - public virtual System.Runtime.ExceptionServices.ExceptionDispatchInfo ExceptionDispatchInfo { get { throw null; } set { } } + public virtual System.Exception? Exception { get { throw null; } set { } } + public virtual System.Runtime.ExceptionServices.ExceptionDispatchInfo? ExceptionDispatchInfo { get { throw null; } set { } } public virtual bool ExceptionHandled { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } - public virtual Microsoft.AspNetCore.Mvc.IActionResult Result { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public virtual Microsoft.AspNetCore.Mvc.IActionResult? Result { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } } public partial class ResourceExecutingContext : Microsoft.AspNetCore.Mvc.Filters.FilterContext { public ResourceExecutingContext(Microsoft.AspNetCore.Mvc.ActionContext actionContext, System.Collections.Generic.IList filters, System.Collections.Generic.IList valueProviderFactories) : base (default(Microsoft.AspNetCore.Mvc.ActionContext), default(System.Collections.Generic.IList)) { } - public virtual Microsoft.AspNetCore.Mvc.IActionResult Result { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public virtual Microsoft.AspNetCore.Mvc.IActionResult? Result { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } public System.Collections.Generic.IList ValueProviderFactories { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } } public delegate System.Threading.Tasks.Task ResourceExecutionDelegate(); @@ -366,8 +367,8 @@ namespace Microsoft.AspNetCore.Mvc.Filters public ResultExecutedContext(Microsoft.AspNetCore.Mvc.ActionContext actionContext, System.Collections.Generic.IList filters, Microsoft.AspNetCore.Mvc.IActionResult result, object controller) : base (default(Microsoft.AspNetCore.Mvc.ActionContext), default(System.Collections.Generic.IList)) { } public virtual bool Canceled { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } public virtual object Controller { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } - public virtual System.Exception Exception { get { throw null; } set { } } - public virtual System.Runtime.ExceptionServices.ExceptionDispatchInfo ExceptionDispatchInfo { get { throw null; } set { } } + public virtual System.Exception? Exception { get { throw null; } set { } } + public virtual System.Runtime.ExceptionServices.ExceptionDispatchInfo? ExceptionDispatchInfo { get { throw null; } set { } } public virtual bool ExceptionHandled { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } public virtual Microsoft.AspNetCore.Mvc.IActionResult Result { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } } @@ -382,7 +383,7 @@ namespace Microsoft.AspNetCore.Mvc.Filters } namespace Microsoft.AspNetCore.Mvc.Formatters { - public partial class FormatterCollection : System.Collections.ObjectModel.Collection + public partial class FormatterCollection : System.Collections.ObjectModel.Collection where TFormatter : notnull { public FormatterCollection() { } public FormatterCollection(System.Collections.Generic.IList list) { } @@ -426,7 +427,7 @@ namespace Microsoft.AspNetCore.Mvc.Formatters internal InputFormatterResult() { } public bool HasError { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } public bool IsModelSet { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } - public object Model { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } + public object? Model { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } public static Microsoft.AspNetCore.Mvc.Formatters.InputFormatterResult Failure() { throw null; } public static System.Threading.Tasks.Task FailureAsync() { throw null; } public static Microsoft.AspNetCore.Mvc.Formatters.InputFormatterResult NoValue() { throw null; } @@ -445,8 +446,8 @@ namespace Microsoft.AspNetCore.Mvc.Formatters public virtual Microsoft.Extensions.Primitives.StringSegment ContentType { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } public virtual bool ContentTypeIsServerDefined { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } public virtual Microsoft.AspNetCore.Http.HttpContext HttpContext { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] protected set { } } - public virtual object Object { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] protected set { } } - public virtual System.Type ObjectType { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] protected set { } } + public virtual object? Object { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] protected set { } } + public virtual System.Type? ObjectType { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] protected set { } } } public partial class OutputFormatterWriteContext : Microsoft.AspNetCore.Mvc.Formatters.OutputFormatterCanWriteContext { @@ -460,18 +461,18 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding { public BindingInfo() { } public BindingInfo(Microsoft.AspNetCore.Mvc.ModelBinding.BindingInfo other) { } - public string BinderModelName { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } - public System.Type BinderType { get { throw null; } set { } } - public Microsoft.AspNetCore.Mvc.ModelBinding.BindingSource BindingSource { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public string? BinderModelName { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public System.Type? BinderType { get { throw null; } set { } } + public Microsoft.AspNetCore.Mvc.ModelBinding.BindingSource? BindingSource { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } public Microsoft.AspNetCore.Mvc.ModelBinding.EmptyBodyBehavior EmptyBodyBehavior { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } - public Microsoft.AspNetCore.Mvc.ModelBinding.IPropertyFilterProvider PropertyFilterProvider { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } - public System.Func RequestPredicate { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } - public static Microsoft.AspNetCore.Mvc.ModelBinding.BindingInfo GetBindingInfo(System.Collections.Generic.IEnumerable attributes) { throw null; } - public static Microsoft.AspNetCore.Mvc.ModelBinding.BindingInfo GetBindingInfo(System.Collections.Generic.IEnumerable attributes, Microsoft.AspNetCore.Mvc.ModelBinding.ModelMetadata modelMetadata) { throw null; } + public Microsoft.AspNetCore.Mvc.ModelBinding.IPropertyFilterProvider? PropertyFilterProvider { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public System.Func? RequestPredicate { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public static Microsoft.AspNetCore.Mvc.ModelBinding.BindingInfo? GetBindingInfo(System.Collections.Generic.IEnumerable attributes) { throw null; } + public static Microsoft.AspNetCore.Mvc.ModelBinding.BindingInfo? GetBindingInfo(System.Collections.Generic.IEnumerable attributes, Microsoft.AspNetCore.Mvc.ModelBinding.ModelMetadata modelMetadata) { throw null; } public bool TryApplyBindingInfo(Microsoft.AspNetCore.Mvc.ModelBinding.ModelMetadata modelMetadata) { throw null; } } [System.Diagnostics.DebuggerDisplayAttribute("Source: {DisplayName}")] - public partial class BindingSource : System.IEquatable + public partial class BindingSource : System.IEquatable { public static readonly Microsoft.AspNetCore.Mvc.ModelBinding.BindingSource Body; public static readonly Microsoft.AspNetCore.Mvc.ModelBinding.BindingSource Custom; @@ -489,11 +490,11 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding public bool IsFromRequest { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } public bool IsGreedy { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } public virtual bool CanAcceptDataFrom(Microsoft.AspNetCore.Mvc.ModelBinding.BindingSource bindingSource) { throw null; } - public bool Equals(Microsoft.AspNetCore.Mvc.ModelBinding.BindingSource other) { throw null; } - public override bool Equals(object obj) { throw null; } + public bool Equals(Microsoft.AspNetCore.Mvc.ModelBinding.BindingSource? other) { throw null; } + public override bool Equals(object? obj) { throw null; } public override int GetHashCode() { throw null; } - public static bool operator ==(Microsoft.AspNetCore.Mvc.ModelBinding.BindingSource s1, Microsoft.AspNetCore.Mvc.ModelBinding.BindingSource s2) { throw null; } - public static bool operator !=(Microsoft.AspNetCore.Mvc.ModelBinding.BindingSource s1, Microsoft.AspNetCore.Mvc.ModelBinding.BindingSource s2) { throw null; } + public static bool operator ==(Microsoft.AspNetCore.Mvc.ModelBinding.BindingSource? s1, Microsoft.AspNetCore.Mvc.ModelBinding.BindingSource? s2) { throw null; } + public static bool operator !=(Microsoft.AspNetCore.Mvc.ModelBinding.BindingSource? s1, Microsoft.AspNetCore.Mvc.ModelBinding.BindingSource? s2) { throw null; } } public partial class CompositeBindingSource : Microsoft.AspNetCore.Mvc.ModelBinding.BindingSource { @@ -524,7 +525,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding } public partial interface IBindingSourceMetadata { - Microsoft.AspNetCore.Mvc.ModelBinding.BindingSource BindingSource { get; } + Microsoft.AspNetCore.Mvc.ModelBinding.BindingSource? BindingSource { get; } } public partial interface IModelBinder { @@ -607,9 +608,9 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding private readonly object _dummy; private readonly int _dummyPrimitive; public bool IsModelSet { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } - public object Model { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } + public object? Model { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } public bool Equals(Microsoft.AspNetCore.Mvc.ModelBinding.ModelBindingResult other) { throw null; } - public override bool Equals(object obj) { throw null; } + public override bool Equals(object? obj) { throw null; } public static Microsoft.AspNetCore.Mvc.ModelBinding.ModelBindingResult Failed() { throw null; } public override int GetHashCode() { throw null; } public static bool operator ==(Microsoft.AspNetCore.Mvc.ModelBinding.ModelBindingResult x, Microsoft.AspNetCore.Mvc.ModelBinding.ModelBindingResult y) { throw null; } @@ -620,10 +621,10 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding public partial class ModelError { public ModelError(System.Exception exception) { } - public ModelError(System.Exception exception, string errorMessage) { } - public ModelError(string errorMessage) { } + public ModelError(System.Exception exception, string? errorMessage) { } + public ModelError(string? errorMessage) { } public string ErrorMessage { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } - public System.Exception Exception { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } + public System.Exception? Exception { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } } public partial class ModelErrorCollection : System.Collections.ObjectModel.Collection { @@ -632,7 +633,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding public void Add(string errorMessage) { } } [System.Diagnostics.DebuggerDisplayAttribute("{DebuggerToString(),nq}")] - public abstract partial class ModelMetadata : Microsoft.AspNetCore.Mvc.ModelBinding.IModelMetadataProvider, System.IEquatable + public abstract partial class ModelMetadata : Microsoft.AspNetCore.Mvc.ModelBinding.IModelMetadataProvider, System.IEquatable { public static readonly int DefaultOrder; protected ModelMetadata(Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.ModelMetadataIdentity identity) { } @@ -641,15 +642,15 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding public abstract System.Type BinderType { get; } public abstract Microsoft.AspNetCore.Mvc.ModelBinding.BindingSource BindingSource { get; } public virtual Microsoft.AspNetCore.Mvc.ModelBinding.ModelMetadata ContainerMetadata { get { throw null; } } - public System.Type ContainerType { get { throw null; } } + public System.Type? ContainerType { get { throw null; } } public abstract bool ConvertEmptyStringToNull { get; } public abstract string DataTypeName { get; } public abstract string Description { get; } public abstract string DisplayFormatString { get; } public abstract string DisplayName { get; } public abstract string EditFormatString { get; } - public abstract Microsoft.AspNetCore.Mvc.ModelBinding.ModelMetadata ElementMetadata { get; } - public System.Type ElementType { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } + public abstract Microsoft.AspNetCore.Mvc.ModelBinding.ModelMetadata? ElementMetadata { get; } + public System.Type? ElementType { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } public abstract System.Collections.Generic.IEnumerable> EnumGroupedDisplayNamesAndValues { get; } public abstract System.Collections.Generic.IReadOnlyDictionary EnumNamesAndValues { get; } public abstract bool HasNonDefaultEditFormat { get; } @@ -671,17 +672,17 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding public Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.ModelMetadataKind MetadataKind { get { throw null; } } public abstract Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.ModelBindingMessageProvider ModelBindingMessageProvider { get; } public System.Type ModelType { get { throw null; } } - public string Name { get { throw null; } } + public string? Name { get { throw null; } } public abstract string NullDisplayText { get; } public abstract int Order { get; } - public string ParameterName { get { throw null; } } + public string? ParameterName { get { throw null; } } public abstract string Placeholder { get; } public abstract Microsoft.AspNetCore.Mvc.ModelBinding.ModelPropertyCollection Properties { get; } public abstract Microsoft.AspNetCore.Mvc.ModelBinding.IPropertyFilterProvider PropertyFilterProvider { get; } public abstract System.Func PropertyGetter { get; } - public string PropertyName { get { throw null; } } + public string? PropertyName { get { throw null; } } public abstract System.Action PropertySetter { get; } - public virtual Microsoft.AspNetCore.Mvc.ModelBinding.Validation.IPropertyValidationFilter PropertyValidationFilter { get { throw null; } } + public virtual Microsoft.AspNetCore.Mvc.ModelBinding.Validation.IPropertyValidationFilter? PropertyValidationFilter { get { throw null; } } public abstract bool ShowForDisplay { get; } public abstract bool ShowForEdit { get; } public abstract string SimpleDisplayProperty { get; } @@ -689,8 +690,8 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding public System.Type UnderlyingOrModelType { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } public abstract bool ValidateChildren { get; } public abstract System.Collections.Generic.IReadOnlyList ValidatorMetadata { get; } - public bool Equals(Microsoft.AspNetCore.Mvc.ModelBinding.ModelMetadata other) { throw null; } - public override bool Equals(object obj) { throw null; } + public bool Equals(Microsoft.AspNetCore.Mvc.ModelBinding.ModelMetadata? other) { throw null; } + public override bool Equals(object? obj) { throw null; } public string GetDisplayName() { throw null; } public override int GetHashCode() { throw null; } public virtual System.Collections.Generic.IEnumerable GetMetadataForProperties(System.Type modelType) { throw null; } @@ -708,7 +709,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding public partial class ModelPropertyCollection : System.Collections.ObjectModel.ReadOnlyCollection { public ModelPropertyCollection(System.Collections.Generic.IEnumerable properties) : base (default(System.Collections.Generic.IList)) { } - public Microsoft.AspNetCore.Mvc.ModelBinding.ModelMetadata this[string propertyName] { get { throw null; } } + public Microsoft.AspNetCore.Mvc.ModelBinding.ModelMetadata? this[string propertyName] { get { throw null; } } } public partial class ModelStateDictionary : System.Collections.Generic.IEnumerable>, System.Collections.Generic.IReadOnlyCollection>, System.Collections.Generic.IReadOnlyDictionary, System.Collections.IEnumerable { @@ -724,8 +725,8 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding public Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary.KeyEnumerable Keys { get { throw null; } } public int MaxAllowedErrors { get { throw null; } set { } } public Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateEntry Root { get { throw null; } } - System.Collections.Generic.IEnumerable System.Collections.Generic.IReadOnlyDictionary.Keys { get { throw null; } } - System.Collections.Generic.IEnumerable System.Collections.Generic.IReadOnlyDictionary.Values { get { throw null; } } + System.Collections.Generic.IEnumerable System.Collections.Generic.IReadOnlyDictionary.Keys { get { throw null; } } + System.Collections.Generic.IEnumerable System.Collections.Generic.IReadOnlyDictionary.Values { get { throw null; } } public Microsoft.AspNetCore.Mvc.ModelBinding.ModelValidationState ValidationState { get { throw null; } } public Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary.ValueEnumerable Values { get { throw null; } } public void AddModelError(string key, System.Exception exception, Microsoft.AspNetCore.Mvc.ModelBinding.ModelMetadata metadata) { } @@ -742,14 +743,14 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding public void Merge(Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary dictionary) { } public bool Remove(string key) { throw null; } public void SetModelValue(string key, Microsoft.AspNetCore.Mvc.ModelBinding.ValueProviderResult valueProviderResult) { } - public void SetModelValue(string key, object rawValue, string attemptedValue) { } + public void SetModelValue(string key, object? rawValue, string attemptedValue) { } public static bool StartsWithPrefix(string prefix, string key) { throw null; } - System.Collections.Generic.IEnumerator> System.Collections.Generic.IEnumerable>.GetEnumerator() { throw null; } + System.Collections.Generic.IEnumerator> System.Collections.Generic.IEnumerable>.GetEnumerator() { throw null; } System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { throw null; } public bool TryAddModelError(string key, System.Exception exception, Microsoft.AspNetCore.Mvc.ModelBinding.ModelMetadata metadata) { throw null; } public bool TryAddModelError(string key, string errorMessage) { throw null; } public bool TryAddModelException(string key, System.Exception exception) { throw null; } - public bool TryGetValue(string key, out Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateEntry value) { throw null; } + public bool TryGetValue(string key, [System.Diagnostics.CodeAnalysis.NotNullWhenAttribute(true)] out Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateEntry? value) { throw null; } [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] public partial struct Enumerator : System.Collections.Generic.IEnumerator>, System.Collections.IEnumerator, System.IDisposable { @@ -769,7 +770,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding private readonly int _dummyPrimitive; public KeyEnumerable(Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary dictionary) { throw null; } public Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary.KeyEnumerator GetEnumerator() { throw null; } - System.Collections.Generic.IEnumerator System.Collections.Generic.IEnumerable.GetEnumerator() { throw null; } + System.Collections.Generic.IEnumerator System.Collections.Generic.IEnumerable.GetEnumerator() { throw null; } System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { throw null; } } [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] @@ -791,7 +792,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding private readonly int _dummyPrimitive; public PrefixEnumerable(Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary dictionary, string prefix) { throw null; } public Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary.Enumerator GetEnumerator() { throw null; } - System.Collections.Generic.IEnumerator> System.Collections.Generic.IEnumerable>.GetEnumerator() { throw null; } + System.Collections.Generic.IEnumerator> System.Collections.Generic.IEnumerable>.GetEnumerator() { throw null; } System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { throw null; } } [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] @@ -820,13 +821,13 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding public abstract partial class ModelStateEntry { protected ModelStateEntry() { } - public string AttemptedValue { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } - public abstract System.Collections.Generic.IReadOnlyList Children { get; } + public string? AttemptedValue { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public abstract System.Collections.Generic.IReadOnlyList? Children { get; } public Microsoft.AspNetCore.Mvc.ModelBinding.ModelErrorCollection Errors { get { throw null; } } public abstract bool IsContainerNode { get; } - public object RawValue { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public object? RawValue { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } public Microsoft.AspNetCore.Mvc.ModelBinding.ModelValidationState ValidationState { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } - public abstract Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateEntry GetModelStateForProperty(string propertyName); + public abstract Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateEntry? GetModelStateForProperty(string propertyName); } public enum ModelValidationState { @@ -859,11 +860,11 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding public ValueProviderResult(Microsoft.Extensions.Primitives.StringValues values) { throw null; } public ValueProviderResult(Microsoft.Extensions.Primitives.StringValues values, System.Globalization.CultureInfo culture) { throw null; } public System.Globalization.CultureInfo Culture { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } - public string FirstValue { get { throw null; } } + public string? FirstValue { get { throw null; } } public int Length { get { throw null; } } public Microsoft.Extensions.Primitives.StringValues Values { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } public bool Equals(Microsoft.AspNetCore.Mvc.ModelBinding.ValueProviderResult other) { throw null; } - public override bool Equals(object obj) { throw null; } + public override bool Equals(object? obj) { throw null; } public System.Collections.Generic.IEnumerator GetEnumerator() { throw null; } public override int GetHashCode() { throw null; } public static bool operator ==(Microsoft.AspNetCore.Mvc.ModelBinding.ValueProviderResult x, Microsoft.AspNetCore.Mvc.ModelBinding.ValueProviderResult y) { throw null; } @@ -896,14 +897,14 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata { private readonly object _dummy; private readonly int _dummyPrimitive; - public System.Type ContainerType { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } + public System.Type? ContainerType { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } public Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.ModelMetadataKind MetadataKind { get { throw null; } } public System.Type ModelType { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } - public string Name { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } - public System.Reflection.ParameterInfo ParameterInfo { get { throw null; } } - public System.Reflection.PropertyInfo PropertyInfo { get { throw null; } } + public string? Name { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } + public System.Reflection.ParameterInfo? ParameterInfo { get { throw null; } } + public System.Reflection.PropertyInfo? PropertyInfo { get { throw null; } } public bool Equals(Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.ModelMetadataIdentity other) { throw null; } - public override bool Equals(object obj) { throw null; } + public override bool Equals(object? obj) { throw null; } public static Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.ModelMetadataIdentity ForParameter(System.Reflection.ParameterInfo parameter) { throw null; } public static Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.ModelMetadataIdentity ForParameter(System.Reflection.ParameterInfo parameter, System.Type modelType) { throw null; } public static Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.ModelMetadataIdentity ForProperty(System.Reflection.PropertyInfo propertyInfo, System.Type modelType, System.Type containerType) { throw null; } @@ -1000,17 +1001,19 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation public ValidationEntry(Microsoft.AspNetCore.Mvc.ModelBinding.ModelMetadata metadata, string key, object model) { throw null; } public string Key { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } public Microsoft.AspNetCore.Mvc.ModelBinding.ModelMetadata Metadata { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } } - public object Model { get { throw null; } } + public object? Model { get { throw null; } } } public partial class ValidationStateDictionary : System.Collections.Generic.ICollection>, System.Collections.Generic.IDictionary, System.Collections.Generic.IEnumerable>, System.Collections.Generic.IReadOnlyCollection>, System.Collections.Generic.IReadOnlyDictionary, System.Collections.IEnumerable { public ValidationStateDictionary() { } public int Count { get { throw null; } } public bool IsReadOnly { get { throw null; } } - public Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationStateEntry this[object key] { get { throw null; } set { } } + public Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationStateEntry? this[object key] { get { throw null; } set { } } public System.Collections.Generic.ICollection Keys { get { throw null; } } - System.Collections.Generic.IEnumerable System.Collections.Generic.IReadOnlyDictionary.Keys { get { throw null; } } - System.Collections.Generic.IEnumerable System.Collections.Generic.IReadOnlyDictionary.Values { get { throw null; } } + Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationStateEntry System.Collections.Generic.IDictionary.this[object key] { get { throw null; } set { } } + Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationStateEntry System.Collections.Generic.IReadOnlyDictionary.this[object key] { get { throw null; } } + System.Collections.Generic.IEnumerable System.Collections.Generic.IReadOnlyDictionary.Keys { get { throw null; } } + System.Collections.Generic.IEnumerable System.Collections.Generic.IReadOnlyDictionary.Values { get { throw null; } } public System.Collections.Generic.ICollection Values { get { throw null; } } public void Add(System.Collections.Generic.KeyValuePair item) { } public void Add(object key, Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationStateEntry value) { } @@ -1022,7 +1025,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation public bool Remove(System.Collections.Generic.KeyValuePair item) { throw null; } public bool Remove(object key) { throw null; } System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { throw null; } - public bool TryGetValue(object key, out Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationStateEntry value) { throw null; } + public bool TryGetValue(object key, [System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute(false)] out Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationStateEntry value) { throw null; } } public partial class ValidationStateEntry { @@ -1050,25 +1053,25 @@ namespace Microsoft.AspNetCore.Mvc.Routing public int Order { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } public bool SuppressLinkGeneration { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } public bool SuppressPathMatching { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } - public string Template { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public string? Template { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } } public partial class UrlActionContext { public UrlActionContext() { } - public string Action { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } - public string Controller { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } - public string Fragment { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } - public string Host { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } - public string Protocol { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } - public object Values { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public string? Action { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public string? Controller { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public string? Fragment { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public string? Host { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public string? Protocol { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public object? Values { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } } public partial class UrlRouteContext { public UrlRouteContext() { } - public string Fragment { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } - public string Host { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } - public string Protocol { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } - public string RouteName { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } - public object Values { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public string? Fragment { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public string? Host { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public string? Protocol { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public string? RouteName { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } + public object? Values { [System.Runtime.CompilerServices.CompilerGeneratedAttribute] get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute] set { } } } } diff --git a/src/Mvc/Mvc.Abstractions/src/Abstractions/ActionDescriptor.cs b/src/Mvc/Mvc.Abstractions/src/Abstractions/ActionDescriptor.cs index c6200ba6ee..fe6130f382 100644 --- a/src/Mvc/Mvc.Abstractions/src/Abstractions/ActionDescriptor.cs +++ b/src/Mvc/Mvc.Abstractions/src/Abstractions/ActionDescriptor.cs @@ -38,42 +38,42 @@ namespace Microsoft.AspNetCore.Mvc.Abstractions /// /// Gets or sets the . /// - public AttributeRouteInfo AttributeRouteInfo { get; set; } + public AttributeRouteInfo? AttributeRouteInfo { get; set; } /// /// The set of constraints for this action. Must all be satisfied for the action to be selected. /// - public IList ActionConstraints { get; set; } + public IList? ActionConstraints { get; set; } /// /// Gets or sets the endpoint metadata for this action. /// This API is meant for infrastructure and should not be used by application code. /// - public IList EndpointMetadata { get; set; } + public IList EndpointMetadata { get; set; } = Array.Empty(); /// /// The set of parameters associated with this action. /// - public IList Parameters { get; set; } + public IList Parameters { get; set; } = Array.Empty(); /// /// The set of properties which are model bound. /// - public IList BoundProperties { get; set; } + public IList BoundProperties { get; set; } = Array.Empty(); /// /// The set of filters associated with this action. /// - public IList FilterDescriptors { get; set; } + public IList FilterDescriptors { get; set; } = Array.Empty(); /// /// A friendly name for this action. /// - public virtual string DisplayName { get; set; } + public virtual string? DisplayName { get; set; } /// /// Stores arbitrary metadata properties associated with the . /// - public IDictionary Properties { get; set; } + public IDictionary Properties { get; set; } = default!; } } diff --git a/src/Mvc/Mvc.Abstractions/src/Abstractions/ActionDescriptorExtensions.cs b/src/Mvc/Mvc.Abstractions/src/Abstractions/ActionDescriptorExtensions.cs index 3cd94db1f1..e683080af6 100644 --- a/src/Mvc/Mvc.Abstractions/src/Abstractions/ActionDescriptorExtensions.cs +++ b/src/Mvc/Mvc.Abstractions/src/Abstractions/ActionDescriptorExtensions.cs @@ -24,14 +24,13 @@ namespace Microsoft.AspNetCore.Mvc.Abstractions throw new ArgumentNullException(nameof(actionDescriptor)); } - object value; - if (actionDescriptor.Properties.TryGetValue(typeof(T), out value)) + if (actionDescriptor.Properties.TryGetValue(typeof(T), out var value)) { return (T)value; } else { - return default(T); + return default!; } } diff --git a/src/Mvc/Mvc.Abstractions/src/Abstractions/ActionInvokerProviderContext.cs b/src/Mvc/Mvc.Abstractions/src/Abstractions/ActionInvokerProviderContext.cs index 1356b02ea4..ccb5af263c 100644 --- a/src/Mvc/Mvc.Abstractions/src/Abstractions/ActionInvokerProviderContext.cs +++ b/src/Mvc/Mvc.Abstractions/src/Abstractions/ActionInvokerProviderContext.cs @@ -32,6 +32,6 @@ namespace Microsoft.AspNetCore.Mvc.Abstractions /// /// Gets or sets the that will be used to invoke /// - public IActionInvoker Result { get; set; } + public IActionInvoker? Result { get; set; } } } diff --git a/src/Mvc/Mvc.Abstractions/src/Abstractions/ParameterDescriptor.cs b/src/Mvc/Mvc.Abstractions/src/Abstractions/ParameterDescriptor.cs index 33e3824a0b..4414affe32 100644 --- a/src/Mvc/Mvc.Abstractions/src/Abstractions/ParameterDescriptor.cs +++ b/src/Mvc/Mvc.Abstractions/src/Abstractions/ParameterDescriptor.cs @@ -14,16 +14,16 @@ namespace Microsoft.AspNetCore.Mvc.Abstractions /// /// Gets or sets the parameter name. /// - public string Name { get; set; } + public string Name { get; set; } = default!; /// /// Gets or sets the type of the parameter. /// - public Type ParameterType { get; set; } + public Type ParameterType { get; set; } = default!; /// /// Gets or sets the for the parameter. /// - public BindingInfo BindingInfo { get; set; } + public BindingInfo BindingInfo { get; set; } = default!; } } diff --git a/src/Mvc/Mvc.Abstractions/src/ActionConstraints/ActionConstraintContext.cs b/src/Mvc/Mvc.Abstractions/src/ActionConstraints/ActionConstraintContext.cs index 68ee228d0e..c475f0a634 100644 --- a/src/Mvc/Mvc.Abstractions/src/ActionConstraints/ActionConstraintContext.cs +++ b/src/Mvc/Mvc.Abstractions/src/ActionConstraints/ActionConstraintContext.cs @@ -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 System.Collections.Generic; using Microsoft.AspNetCore.Routing; @@ -15,16 +16,16 @@ namespace Microsoft.AspNetCore.Mvc.ActionConstraints /// The list of . This includes all actions that are valid for the current /// request, as well as their constraints. /// - public IReadOnlyList Candidates { get; set; } + public IReadOnlyList Candidates { get; set; } = Array.Empty(); /// /// The current . /// - public ActionSelectorCandidate CurrentCandidate { get; set; } + public ActionSelectorCandidate CurrentCandidate { get; set; } = default!; /// /// The . /// - public RouteContext RouteContext { get; set; } + public RouteContext RouteContext { get; set; } = default!; } } \ No newline at end of file diff --git a/src/Mvc/Mvc.Abstractions/src/ActionConstraints/ActionConstraintItem.cs b/src/Mvc/Mvc.Abstractions/src/ActionConstraints/ActionConstraintItem.cs index 7022a8f283..8868005a57 100644 --- a/src/Mvc/Mvc.Abstractions/src/ActionConstraints/ActionConstraintItem.cs +++ b/src/Mvc/Mvc.Abstractions/src/ActionConstraints/ActionConstraintItem.cs @@ -28,7 +28,7 @@ namespace Microsoft.AspNetCore.Mvc.ActionConstraints /// /// The associated with . /// - public IActionConstraint Constraint { get; set; } + public IActionConstraint Constraint { get; set; } = default!; /// /// The instance. diff --git a/src/Mvc/Mvc.Abstractions/src/ActionContext.cs b/src/Mvc/Mvc.Abstractions/src/ActionContext.cs index 744a439dc7..000e55558c 100644 --- a/src/Mvc/Mvc.Abstractions/src/ActionContext.cs +++ b/src/Mvc/Mvc.Abstractions/src/ActionContext.cs @@ -31,10 +31,10 @@ namespace Microsoft.AspNetCore.Mvc /// The to copy. public ActionContext(ActionContext actionContext) : this( - actionContext?.HttpContext, - actionContext?.RouteData, - actionContext?.ActionDescriptor, - actionContext?.ModelState) + actionContext.HttpContext, + actionContext.RouteData, + actionContext.ActionDescriptor, + actionContext.ModelState) { } @@ -97,10 +97,7 @@ namespace Microsoft.AspNetCore.Mvc /// /// The property setter is provided for unit test purposes only. /// - public ActionDescriptor ActionDescriptor - { - get; set; - } + public ActionDescriptor ActionDescriptor { get; set; } = default!; /// /// Gets or sets the for the current request. @@ -108,18 +105,12 @@ namespace Microsoft.AspNetCore.Mvc /// /// The property setter is provided for unit test purposes only. /// - public HttpContext HttpContext - { - get; set; - } + public HttpContext HttpContext { get; set; } = default!; /// /// Gets the . /// - public ModelStateDictionary ModelState - { - get; - } + public ModelStateDictionary ModelState { get; } = default!; /// /// Gets or sets the for the current request. @@ -127,9 +118,6 @@ namespace Microsoft.AspNetCore.Mvc /// /// The property setter is provided for unit test purposes only. /// - public RouteData RouteData - { - get; set; - } + public RouteData RouteData { get; set; } = default!; } } diff --git a/src/Mvc/Mvc.Abstractions/src/ApiExplorer/ApiDescription.cs b/src/Mvc/Mvc.Abstractions/src/ApiExplorer/ApiDescription.cs index 827712f1bc..f20437ce0d 100644 --- a/src/Mvc/Mvc.Abstractions/src/ApiExplorer/ApiDescription.cs +++ b/src/Mvc/Mvc.Abstractions/src/ApiExplorer/ApiDescription.cs @@ -16,17 +16,17 @@ namespace Microsoft.AspNetCore.Mvc.ApiExplorer /// /// Gets or sets for this api. /// - public ActionDescriptor ActionDescriptor { get; set; } + public ActionDescriptor ActionDescriptor { get; set; } = default!; /// /// Gets or sets group name for this api. /// - public string GroupName { get; set; } + public string? GroupName { get; set; } /// /// Gets or sets the supported HTTP method for this api, or null if all HTTP methods are supported. /// - public string HttpMethod { get; set; } + public string? HttpMethod { get; set; } /// /// Gets a list of for this api. @@ -41,7 +41,7 @@ namespace Microsoft.AspNetCore.Mvc.ApiExplorer /// /// Gets or sets relative url path template (relative to application root) for this api. /// - public string RelativePath { get; set; } + public string RelativePath { get; set; } = default!; /// /// Gets the list of possible formats for a request. diff --git a/src/Mvc/Mvc.Abstractions/src/ApiExplorer/ApiParameterDescription.cs b/src/Mvc/Mvc.Abstractions/src/ApiExplorer/ApiParameterDescription.cs index 17f499c1f0..7b6d8f548a 100644 --- a/src/Mvc/Mvc.Abstractions/src/ApiExplorer/ApiParameterDescription.cs +++ b/src/Mvc/Mvc.Abstractions/src/ApiExplorer/ApiParameterDescription.cs @@ -15,37 +15,37 @@ namespace Microsoft.AspNetCore.Mvc.ApiExplorer /// /// Gets or sets the . /// - public ModelMetadata ModelMetadata { get; set; } + public ModelMetadata ModelMetadata { get; set; } = default!; /// /// Gets or sets the name. /// - public string Name { get; set; } + public string Name { get; set; } = default!; /// /// Gets or sets the . /// - public ApiParameterRouteInfo RouteInfo { get; set; } + public ApiParameterRouteInfo? RouteInfo { get; set; } /// /// Gets or sets the . /// - public BindingSource Source { get; set; } + public BindingSource Source { get; set; } = default!; /// /// Gets or sets the . /// - public BindingInfo BindingInfo { get; set; } + public BindingInfo? BindingInfo { get; set; } /// /// Gets or sets the parameter type. /// - public Type Type { get; set; } + public Type Type { get; set; } = default!; /// /// Gets or sets the parameter descriptor. /// - public ParameterDescriptor ParameterDescriptor { get; set; } + public ParameterDescriptor ParameterDescriptor { get; set; } = default!; /// /// Gets or sets a value that determines if the parameter is required. @@ -63,6 +63,6 @@ namespace Microsoft.AspNetCore.Mvc.ApiExplorer /// /// Gets or sets the default value for a parameter. /// - public object DefaultValue { get; set; } + public object? DefaultValue { get; set; } } } \ No newline at end of file diff --git a/src/Mvc/Mvc.Abstractions/src/ApiExplorer/ApiParameterRouteInfo.cs b/src/Mvc/Mvc.Abstractions/src/ApiExplorer/ApiParameterRouteInfo.cs index 6e5cbfc494..fbb79452d4 100644 --- a/src/Mvc/Mvc.Abstractions/src/ApiExplorer/ApiParameterRouteInfo.cs +++ b/src/Mvc/Mvc.Abstractions/src/ApiExplorer/ApiParameterRouteInfo.cs @@ -18,12 +18,12 @@ namespace Microsoft.AspNetCore.Mvc.ApiExplorer /// Route constraints are only applied when a value is bound from a URL's path. See /// for the data source considered. /// - public IEnumerable Constraints { get; set; } + public IEnumerable? Constraints { get; set; } /// /// Gets or sets the default value for the parameter. /// - public object DefaultValue { get; set; } + public object? DefaultValue { get; set; } /// /// Gets a value indicating whether not a parameter is considered optional by routing. diff --git a/src/Mvc/Mvc.Abstractions/src/ApiExplorer/ApiRequestFormat.cs b/src/Mvc/Mvc.Abstractions/src/ApiExplorer/ApiRequestFormat.cs index 8d93cc65b3..3e063da212 100644 --- a/src/Mvc/Mvc.Abstractions/src/ApiExplorer/ApiRequestFormat.cs +++ b/src/Mvc/Mvc.Abstractions/src/ApiExplorer/ApiRequestFormat.cs @@ -13,11 +13,11 @@ namespace Microsoft.AspNetCore.Mvc.ApiExplorer /// /// The formatter used to read this request. /// - public IInputFormatter Formatter { get; set; } + public IInputFormatter Formatter { get; set; } = default!; /// /// The media type of the request. /// - public string MediaType { get; set; } + public string MediaType { get; set; } = default!; } } \ No newline at end of file diff --git a/src/Mvc/Mvc.Abstractions/src/ApiExplorer/ApiResponseFormat.cs b/src/Mvc/Mvc.Abstractions/src/ApiExplorer/ApiResponseFormat.cs index bf04db9da7..9830ef279a 100644 --- a/src/Mvc/Mvc.Abstractions/src/ApiExplorer/ApiResponseFormat.cs +++ b/src/Mvc/Mvc.Abstractions/src/ApiExplorer/ApiResponseFormat.cs @@ -13,11 +13,11 @@ namespace Microsoft.AspNetCore.Mvc.ApiExplorer /// /// Gets or sets the formatter used to output this response. /// - public IOutputFormatter Formatter { get; set; } + public IOutputFormatter Formatter { get; set; } = default!; /// /// Gets or sets the media type of the response. /// - public string MediaType { get; set; } + public string MediaType { get; set; } = default!; } } diff --git a/src/Mvc/Mvc.Abstractions/src/ApiExplorer/ApiResponseType.cs b/src/Mvc/Mvc.Abstractions/src/ApiExplorer/ApiResponseType.cs index 6ed9644931..1029ec3437 100644 --- a/src/Mvc/Mvc.Abstractions/src/ApiExplorer/ApiResponseType.cs +++ b/src/Mvc/Mvc.Abstractions/src/ApiExplorer/ApiResponseType.cs @@ -23,7 +23,7 @@ namespace Microsoft.AspNetCore.Mvc.ApiExplorer /// /// Will be null if is null or void. /// - public ModelMetadata ModelMetadata { get; set; } + public ModelMetadata? ModelMetadata { get; set; } /// /// Gets or sets the CLR data type of the response or null. @@ -33,7 +33,7 @@ namespace Microsoft.AspNetCore.Mvc.ApiExplorer /// Microsoft.AspNetCore.Mvc.ProducesAttribute or Microsoft.AspNetCore.Mvc.ProducesResponseTypeAttribute on an action method /// to specify a response type. /// - public Type Type { get; set; } + public Type? Type { get; set; } /// /// Gets or sets the HTTP response status code. diff --git a/src/Mvc/Mvc.Abstractions/src/Filters/ActionExecutedContext.cs b/src/Mvc/Mvc.Abstractions/src/Filters/ActionExecutedContext.cs index 68e0343f04..6440a27878 100644 --- a/src/Mvc/Mvc.Abstractions/src/Filters/ActionExecutedContext.cs +++ b/src/Mvc/Mvc.Abstractions/src/Filters/ActionExecutedContext.cs @@ -12,8 +12,8 @@ namespace Microsoft.AspNetCore.Mvc.Filters /// public class ActionExecutedContext : FilterContext { - private Exception _exception; - private ExceptionDispatchInfo _exceptionDispatchInfo; + private Exception? _exception; + private ExceptionDispatchInfo? _exceptionDispatchInfo; /// /// Instantiates a new instance. @@ -44,7 +44,7 @@ namespace Microsoft.AspNetCore.Mvc.Filters /// Gets or sets the caught while executing the action or action filters, if /// any. /// - public virtual Exception Exception + public virtual Exception? Exception { get { @@ -69,7 +69,7 @@ namespace Microsoft.AspNetCore.Mvc.Filters /// Gets or sets the for the /// , if an was caught and this information captured. /// - public virtual ExceptionDispatchInfo ExceptionDispatchInfo + public virtual ExceptionDispatchInfo? ExceptionDispatchInfo { get { @@ -91,6 +91,6 @@ namespace Microsoft.AspNetCore.Mvc.Filters /// /// Gets or sets the . /// - public virtual IActionResult Result { get; set; } + public virtual IActionResult Result { get; set; } = default!; } } diff --git a/src/Mvc/Mvc.Abstractions/src/Filters/ActionExecutingContext.cs b/src/Mvc/Mvc.Abstractions/src/Filters/ActionExecutingContext.cs index 65ade1e1c5..0bdd07c4a9 100644 --- a/src/Mvc/Mvc.Abstractions/src/Filters/ActionExecutingContext.cs +++ b/src/Mvc/Mvc.Abstractions/src/Filters/ActionExecutingContext.cs @@ -41,7 +41,7 @@ namespace Microsoft.AspNetCore.Mvc.Filters /// Gets or sets the to execute. Setting to a non-null /// value inside an action filter will short-circuit the action and any remaining action filters. /// - public virtual IActionResult Result { get; set; } + public virtual IActionResult? Result { get; set; } /// /// Gets the arguments to pass when invoking the action. Keys are parameter names. diff --git a/src/Mvc/Mvc.Abstractions/src/Filters/AuthorizationFilterContext.cs b/src/Mvc/Mvc.Abstractions/src/Filters/AuthorizationFilterContext.cs index a344d55432..0854a422d2 100644 --- a/src/Mvc/Mvc.Abstractions/src/Filters/AuthorizationFilterContext.cs +++ b/src/Mvc/Mvc.Abstractions/src/Filters/AuthorizationFilterContext.cs @@ -27,6 +27,6 @@ namespace Microsoft.AspNetCore.Mvc.Filters /// Gets or sets the result of the request. Setting to a non-null value inside /// an authorization filter will short-circuit the remainder of the filter pipeline. /// - public virtual IActionResult Result { get; set; } + public virtual IActionResult? Result { get; set; } } } diff --git a/src/Mvc/Mvc.Abstractions/src/Filters/ExceptionContext.cs b/src/Mvc/Mvc.Abstractions/src/Filters/ExceptionContext.cs index c0920f057b..d151134b8a 100644 --- a/src/Mvc/Mvc.Abstractions/src/Filters/ExceptionContext.cs +++ b/src/Mvc/Mvc.Abstractions/src/Filters/ExceptionContext.cs @@ -13,8 +13,8 @@ namespace Microsoft.AspNetCore.Mvc.Filters /// public class ExceptionContext : FilterContext { - private Exception _exception; - private ExceptionDispatchInfo _exceptionDispatchInfo; + private Exception? _exception; + private ExceptionDispatchInfo? _exceptionDispatchInfo; /// /// Instantiates a new instance. @@ -39,7 +39,7 @@ namespace Microsoft.AspNetCore.Mvc.Filters } else { - return _exception; + return _exception!; } } @@ -54,7 +54,7 @@ namespace Microsoft.AspNetCore.Mvc.Filters /// Gets or sets the for the /// , if this information was captured. /// - public virtual ExceptionDispatchInfo ExceptionDispatchInfo + public virtual ExceptionDispatchInfo? ExceptionDispatchInfo { get { @@ -76,6 +76,6 @@ namespace Microsoft.AspNetCore.Mvc.Filters /// /// Gets or sets the . /// - public virtual IActionResult Result { get; set; } + public virtual IActionResult? Result { get; set; } } } diff --git a/src/Mvc/Mvc.Abstractions/src/Filters/FilterContext.cs b/src/Mvc/Mvc.Abstractions/src/Filters/FilterContext.cs index 961e283399..97e0a294b6 100644 --- a/src/Mvc/Mvc.Abstractions/src/Filters/FilterContext.cs +++ b/src/Mvc/Mvc.Abstractions/src/Filters/FilterContext.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; namespace Microsoft.AspNetCore.Mvc.Filters { @@ -81,6 +82,7 @@ namespace Microsoft.AspNetCore.Mvc.Filters /// The implementation of applied to the action associated with /// the /// + [return: MaybeNull] public TMetadata FindEffectivePolicy() where TMetadata : IFilterMetadata { // The most specific policy is the one closest to the action (nearest the end of the list). @@ -93,7 +95,7 @@ namespace Microsoft.AspNetCore.Mvc.Filters } } - return default(TMetadata); + return default; } } } diff --git a/src/Mvc/Mvc.Abstractions/src/Filters/FilterItem.cs b/src/Mvc/Mvc.Abstractions/src/Filters/FilterItem.cs index 516acd7d24..fdf03752b7 100644 --- a/src/Mvc/Mvc.Abstractions/src/Filters/FilterItem.cs +++ b/src/Mvc/Mvc.Abstractions/src/Filters/FilterItem.cs @@ -48,12 +48,12 @@ namespace Microsoft.AspNetCore.Mvc.Filters /// /// Gets the containing the filter metadata. /// - public FilterDescriptor Descriptor { get; } + public FilterDescriptor Descriptor { get; } = default!; /// /// Gets or sets the executable associated with . /// - public IFilterMetadata Filter { get; set; } + public IFilterMetadata Filter { get; set; } = default!; /// /// Gets or sets a value indicating whether or not can be reused across requests. diff --git a/src/Mvc/Mvc.Abstractions/src/Filters/ResourceExecutedContext.cs b/src/Mvc/Mvc.Abstractions/src/Filters/ResourceExecutedContext.cs index 6a54d2c410..8dfe78bba6 100644 --- a/src/Mvc/Mvc.Abstractions/src/Filters/ResourceExecutedContext.cs +++ b/src/Mvc/Mvc.Abstractions/src/Filters/ResourceExecutedContext.cs @@ -12,8 +12,8 @@ namespace Microsoft.AspNetCore.Mvc.Filters /// public class ResourceExecutedContext : FilterContext { - private Exception _exception; - private ExceptionDispatchInfo _exceptionDispatchInfo; + private Exception? _exception; + private ExceptionDispatchInfo? _exceptionDispatchInfo; /// /// Creates a new . @@ -44,7 +44,7 @@ namespace Microsoft.AspNetCore.Mvc.Filters /// Setting to true will also mark the exception as handled. /// /// - public virtual Exception Exception + public virtual Exception? Exception { get { @@ -77,7 +77,7 @@ namespace Microsoft.AspNetCore.Mvc.Filters /// Setting to true will also mark the exception as handled. /// /// - public virtual ExceptionDispatchInfo ExceptionDispatchInfo + public virtual ExceptionDispatchInfo? ExceptionDispatchInfo { get { @@ -115,6 +115,6 @@ namespace Microsoft.AspNetCore.Mvc.Filters /// to resource filters. /// /// - public virtual IActionResult Result { get; set; } + public virtual IActionResult? Result { get; set; } } } \ No newline at end of file diff --git a/src/Mvc/Mvc.Abstractions/src/Filters/ResourceExecutingContext.cs b/src/Mvc/Mvc.Abstractions/src/Filters/ResourceExecutingContext.cs index 46378b3760..37985fc1af 100644 --- a/src/Mvc/Mvc.Abstractions/src/Filters/ResourceExecutingContext.cs +++ b/src/Mvc/Mvc.Abstractions/src/Filters/ResourceExecutingContext.cs @@ -40,7 +40,7 @@ namespace Microsoft.AspNetCore.Mvc.Filters /// Setting to a non-null value inside a resource filter will /// short-circuit execution of additional resource filters and the action itself. /// - public virtual IActionResult Result { get; set; } + public virtual IActionResult? Result { get; set; } /// /// Gets the list of instances used by model binding. diff --git a/src/Mvc/Mvc.Abstractions/src/Filters/ResultExecutedContext.cs b/src/Mvc/Mvc.Abstractions/src/Filters/ResultExecutedContext.cs index ae4947d8bf..01eae1d8cf 100644 --- a/src/Mvc/Mvc.Abstractions/src/Filters/ResultExecutedContext.cs +++ b/src/Mvc/Mvc.Abstractions/src/Filters/ResultExecutedContext.cs @@ -12,8 +12,8 @@ namespace Microsoft.AspNetCore.Mvc.Filters /// public class ResultExecutedContext : FilterContext { - private Exception _exception; - private ExceptionDispatchInfo _exceptionDispatchInfo; + private Exception? _exception; + private ExceptionDispatchInfo? _exceptionDispatchInfo; /// /// Instantiates a new instance. @@ -55,7 +55,7 @@ namespace Microsoft.AspNetCore.Mvc.Filters /// Gets or sets the caught while executing the result or result filters, if /// any. /// - public virtual Exception Exception + public virtual Exception? Exception { get { @@ -80,7 +80,7 @@ namespace Microsoft.AspNetCore.Mvc.Filters /// Gets or sets the for the /// , if an was caught and this information captured. /// - public virtual ExceptionDispatchInfo ExceptionDispatchInfo + public virtual ExceptionDispatchInfo? ExceptionDispatchInfo { get { diff --git a/src/Mvc/Mvc.Abstractions/src/Formatters/FormatterCollection.cs b/src/Mvc/Mvc.Abstractions/src/Formatters/FormatterCollection.cs index 401febb5cf..ad16757da4 100644 --- a/src/Mvc/Mvc.Abstractions/src/Formatters/FormatterCollection.cs +++ b/src/Mvc/Mvc.Abstractions/src/Formatters/FormatterCollection.cs @@ -11,7 +11,7 @@ namespace Microsoft.AspNetCore.Mvc.Formatters /// Represents a collection of formatters. /// /// The type of formatters in the collection. - public class FormatterCollection : Collection + public class FormatterCollection : Collection where TFormatter : notnull { /// /// Initializes a new instance of the class that is empty. diff --git a/src/Mvc/Mvc.Abstractions/src/Formatters/InputFormatterResult.cs b/src/Mvc/Mvc.Abstractions/src/Formatters/InputFormatterResult.cs index 2304cd5671..d83a5095d7 100644 --- a/src/Mvc/Mvc.Abstractions/src/Formatters/InputFormatterResult.cs +++ b/src/Mvc/Mvc.Abstractions/src/Formatters/InputFormatterResult.cs @@ -42,7 +42,7 @@ namespace Microsoft.AspNetCore.Mvc.Formatters /// /// null if is true. /// - public object Model { get; } + public object? Model { get; } /// /// Returns an indicating the diff --git a/src/Mvc/Mvc.Abstractions/src/Formatters/OutputFormatterCanWriteContext.cs b/src/Mvc/Mvc.Abstractions/src/Formatters/OutputFormatterCanWriteContext.cs index ae48a91b1e..daf10315f0 100644 --- a/src/Mvc/Mvc.Abstractions/src/Formatters/OutputFormatterCanWriteContext.cs +++ b/src/Mvc/Mvc.Abstractions/src/Formatters/OutputFormatterCanWriteContext.cs @@ -53,11 +53,11 @@ namespace Microsoft.AspNetCore.Mvc.Formatters /// /// Gets or sets the object to write to the response. /// - public virtual object Object { get; protected set; } + public virtual object? Object { get; protected set; } /// /// Gets or sets the of the object to write to the response. /// - public virtual Type ObjectType { get; protected set; } + public virtual Type? ObjectType { get; protected set; } } } diff --git a/src/Mvc/Mvc.Abstractions/src/Microsoft.AspNetCore.Mvc.Abstractions.csproj b/src/Mvc/Mvc.Abstractions/src/Microsoft.AspNetCore.Mvc.Abstractions.csproj index bc27d62e2c..b3e599ab25 100644 --- a/src/Mvc/Mvc.Abstractions/src/Microsoft.AspNetCore.Mvc.Abstractions.csproj +++ b/src/Mvc/Mvc.Abstractions/src/Microsoft.AspNetCore.Mvc.Abstractions.csproj @@ -9,6 +9,7 @@ Microsoft.AspNetCore.Mvc.IActionResult true aspnetcore;aspnetcoremvc false + enable @@ -20,8 +21,4 @@ Microsoft.AspNetCore.Mvc.IActionResult - - - - diff --git a/src/Mvc/Mvc.Abstractions/src/ModelBinding/BindingInfo.cs b/src/Mvc/Mvc.Abstractions/src/ModelBinding/BindingInfo.cs index 38fbc894a9..b7379ae4e0 100644 --- a/src/Mvc/Mvc.Abstractions/src/ModelBinding/BindingInfo.cs +++ b/src/Mvc/Mvc.Abstractions/src/ModelBinding/BindingInfo.cs @@ -13,7 +13,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding /// public class BindingInfo { - private Type _binderType; + private Type? _binderType; /// /// Creates a new . @@ -44,12 +44,12 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding /// /// Gets or sets the . /// - public BindingSource BindingSource { get; set; } + public BindingSource? BindingSource { get; set; } /// /// Gets or sets the binder model name. /// - public string BinderModelName { get; set; } + public string? BinderModelName { get; set; } /// /// Gets or sets the of the implementation used to bind the @@ -59,7 +59,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding /// Also set if the specified implementation does not /// use values from form data, route values or the query string. /// - public Type BinderType + public Type? BinderType { get => _binderType; set @@ -80,13 +80,13 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding /// /// Gets or sets the . /// - public IPropertyFilterProvider PropertyFilterProvider { get; set; } + public IPropertyFilterProvider? PropertyFilterProvider { get; set; } /// /// Gets or sets a predicate which determines whether or not the model should be bound based on state /// from the current request. /// - public Func RequestPredicate { get; set; } + public Func? RequestPredicate { get; set; } /// /// Gets or sets the value which decides if empty bodies are treated as valid inputs. @@ -104,7 +104,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding /// A collection of attributes which are used to construct /// /// A new instance of . - public static BindingInfo GetBindingInfo(IEnumerable attributes) + public static BindingInfo? GetBindingInfo(IEnumerable attributes) { var bindingInfo = new BindingInfo(); var isBindingInfoPresent = false; @@ -182,7 +182,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding /// A collection of attributes which are used to construct . /// The . /// A new instance of if any binding metadata was discovered; otherwise or . - public static BindingInfo GetBindingInfo(IEnumerable attributes, ModelMetadata modelMetadata) + public static BindingInfo? GetBindingInfo(IEnumerable attributes, ModelMetadata modelMetadata) { if (attributes == null) { diff --git a/src/Mvc/Mvc.Abstractions/src/ModelBinding/BindingSource.cs b/src/Mvc/Mvc.Abstractions/src/ModelBinding/BindingSource.cs index 97105efe3c..ea06036844 100644 --- a/src/Mvc/Mvc.Abstractions/src/ModelBinding/BindingSource.cs +++ b/src/Mvc/Mvc.Abstractions/src/ModelBinding/BindingSource.cs @@ -12,7 +12,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding /// A metadata object representing a source of data for model binding. /// [DebuggerDisplay("Source: {DisplayName}")] - public class BindingSource : IEquatable + public class BindingSource : IEquatable { /// /// A for the request body. @@ -210,13 +210,13 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding } /// - public bool Equals(BindingSource other) + public bool Equals(BindingSource? other) { return string.Equals(other?.Id, Id, StringComparison.Ordinal); } /// - public override bool Equals(object obj) + public override bool Equals(object? obj) { return Equals(obj as BindingSource); } @@ -228,7 +228,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding } /// - public static bool operator ==(BindingSource s1, BindingSource s2) + public static bool operator ==(BindingSource? s1, BindingSource? s2) { if (s1 is null) { @@ -239,7 +239,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding } /// - public static bool operator !=(BindingSource s1, BindingSource s2) + public static bool operator !=(BindingSource? s1, BindingSource? s2) { return !(s1 == s2); } diff --git a/src/Mvc/Mvc.Abstractions/src/ModelBinding/CompositeBindingSource.cs b/src/Mvc/Mvc.Abstractions/src/ModelBinding/CompositeBindingSource.cs index 886deb9951..99044400b5 100644 --- a/src/Mvc/Mvc.Abstractions/src/ModelBinding/CompositeBindingSource.cs +++ b/src/Mvc/Mvc.Abstractions/src/ModelBinding/CompositeBindingSource.cs @@ -89,7 +89,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding /// public override bool CanAcceptDataFrom(BindingSource bindingSource) { - if (bindingSource == null) + if (bindingSource is null) { throw new ArgumentNullException(nameof(bindingSource)); } diff --git a/src/Mvc/Mvc.Abstractions/src/ModelBinding/IBindingSourceMetadata.cs b/src/Mvc/Mvc.Abstractions/src/ModelBinding/IBindingSourceMetadata.cs index 4a1ed31275..8639ce826e 100644 --- a/src/Mvc/Mvc.Abstractions/src/ModelBinding/IBindingSourceMetadata.cs +++ b/src/Mvc/Mvc.Abstractions/src/ModelBinding/IBindingSourceMetadata.cs @@ -15,6 +15,6 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding /// The is metadata which can be used to determine which data /// sources are valid for model binding of a property or parameter. /// - BindingSource BindingSource { get; } + BindingSource? BindingSource { get; } } } \ No newline at end of file diff --git a/src/Mvc/Mvc.Abstractions/src/ModelBinding/Metadata/ModelBindingMessageProvider.cs b/src/Mvc/Mvc.Abstractions/src/ModelBinding/Metadata/ModelBindingMessageProvider.cs index c91bfe4cb0..7992450f37 100644 --- a/src/Mvc/Mvc.Abstractions/src/ModelBinding/Metadata/ModelBindingMessageProvider.cs +++ b/src/Mvc/Mvc.Abstractions/src/ModelBinding/Metadata/ModelBindingMessageProvider.cs @@ -17,28 +17,28 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata /// /// Default is "A value for the '{0}' parameter or property was not provided.". /// - public virtual Func MissingBindRequiredValueAccessor { get; } + public virtual Func MissingBindRequiredValueAccessor { get; } = default!; /// /// Error message the model binding system adds when either the key or the value of a /// is bound but not both. /// /// Default is "A value is required.". - public virtual Func MissingKeyOrValueAccessor { get; } + public virtual Func MissingKeyOrValueAccessor { get; } = default!; /// /// Error message the model binding system adds when no value is provided for the request body, /// but a value is required. /// /// Default is "A non-empty request body is required.". - public virtual Func MissingRequestBodyRequiredValueAccessor { get; } + public virtual Func MissingRequestBodyRequiredValueAccessor { get; } = default!; /// /// Error message the model binding system adds when a null value is bound to a /// non- property. /// /// Default is "The value '{0}' is invalid.". - public virtual Func ValueMustNotBeNullAccessor { get; } + public virtual Func ValueMustNotBeNullAccessor { get; } = default!; /// /// Error message the model binding system adds when is of type @@ -46,7 +46,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata /// with a property. /// /// Default is "The value '{0}' is not valid for {1}.". - public virtual Func AttemptedValueIsInvalidAccessor { get; } + public virtual Func AttemptedValueIsInvalidAccessor { get; } = default!; /// /// Error message the model binding system adds when is of type @@ -54,7 +54,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata /// with a collection element or action parameter. /// /// Default is "The value '{0}' is not valid.". - public virtual Func NonPropertyAttemptedValueIsInvalidAccessor { get; } + public virtual Func NonPropertyAttemptedValueIsInvalidAccessor { get; } = default!; /// /// Error message the model binding system adds when is of type @@ -62,7 +62,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata /// with a property. /// /// Default is "The supplied value is invalid for {0}.". - public virtual Func UnknownValueIsInvalidAccessor { get; } + public virtual Func UnknownValueIsInvalidAccessor { get; } = default!; /// /// Error message the model binding system adds when is of type @@ -70,21 +70,21 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata /// with a collection element or action parameter. /// /// Default is "The supplied value is invalid.". - public virtual Func NonPropertyUnknownValueIsInvalidAccessor { get; } + public virtual Func NonPropertyUnknownValueIsInvalidAccessor { get; } = default!; /// /// Fallback error message HTML and tag helpers display when a property is invalid but the /// s have null s. /// /// Default is "The value '{0}' is invalid.". - public virtual Func ValueIsInvalidAccessor { get; } + public virtual Func ValueIsInvalidAccessor { get; } = default!; /// /// Error message HTML and tag helpers add for client-side validation of numeric formats. Visible in the /// browser if the field for a float (for example) property does not have a correctly-formatted value. /// /// Default is "The field {0} must be a number.". - public virtual Func ValueMustBeANumberAccessor { get; } + public virtual Func ValueMustBeANumberAccessor { get; } = default!; /// /// Error message HTML and tag helpers add for client-side validation of numeric formats. Visible in the @@ -92,6 +92,6 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata /// correctly-formatted value. /// /// Default is "The field must be a number.". - public virtual Func NonPropertyValueMustBeANumberAccessor { get; } + public virtual Func NonPropertyValueMustBeANumberAccessor { get; } = default!; } } diff --git a/src/Mvc/Mvc.Abstractions/src/ModelBinding/Metadata/ModelMetadataIdentity.cs b/src/Mvc/Mvc.Abstractions/src/ModelBinding/Metadata/ModelMetadataIdentity.cs index 9b1cf4fec2..5fff9bad3d 100644 --- a/src/Mvc/Mvc.Abstractions/src/ModelBinding/Metadata/ModelMetadataIdentity.cs +++ b/src/Mvc/Mvc.Abstractions/src/ModelBinding/Metadata/ModelMetadataIdentity.cs @@ -4,7 +4,6 @@ using System; using System.Reflection; using Microsoft.AspNetCore.Mvc.Abstractions; -using Microsoft.Extensions.Internal; namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata { @@ -15,9 +14,9 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata { private ModelMetadataIdentity( Type modelType, - string name = null, - Type containerType = null, - object fieldInfo = null) + string? name = null, + Type? containerType = null, + object? fieldInfo = null) { ModelType = modelType; Name = name; @@ -107,7 +106,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata /// The . /// A . public static ModelMetadataIdentity ForParameter(ParameterInfo parameter) - => ForParameter(parameter, parameter?.ParameterType); + => ForParameter(parameter, parameter.ParameterType); /// /// Creates a for the provided parameter with the specified @@ -135,7 +134,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata /// Gets the defining the model property represented by the current /// instance, or null if the current instance does not represent a property. /// - public Type ContainerType { get; } + public Type? ContainerType { get; } /// /// Gets the represented by the current instance. @@ -168,21 +167,21 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata /// Gets the name of the current instance if it represents a parameter or property, or null if /// the current instance represents a type. /// - public string Name { get; } + public string? Name { get; } - private object FieldInfo { get; } + private object? FieldInfo { get; } /// /// Gets a descriptor for the parameter, or null if this instance /// does not represent a parameter. /// - public ParameterInfo ParameterInfo => FieldInfo as ParameterInfo; + public ParameterInfo? ParameterInfo => FieldInfo as ParameterInfo; /// /// Gets a descriptor for the property, or null if this instance /// does not represent a property. /// - public PropertyInfo PropertyInfo => FieldInfo as PropertyInfo; + public PropertyInfo? PropertyInfo => FieldInfo as PropertyInfo; /// public bool Equals(ModelMetadataIdentity other) @@ -196,7 +195,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata } /// - public override bool Equals(object obj) + public override bool Equals(object? obj) { var other = obj as ModelMetadataIdentity?; return other.HasValue && Equals(other.Value); @@ -205,13 +204,13 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata /// public override int GetHashCode() { - var hash = new HashCodeCombiner(); + var hash = new HashCode(); hash.Add(ContainerType); hash.Add(ModelType); hash.Add(Name, StringComparer.Ordinal); hash.Add(ParameterInfo); hash.Add(PropertyInfo); - return hash; + return hash.ToHashCode(); } } } \ No newline at end of file diff --git a/src/Mvc/Mvc.Abstractions/src/ModelBinding/ModelBinderProviderContext.cs b/src/Mvc/Mvc.Abstractions/src/ModelBinding/ModelBinderProviderContext.cs index 6228923e70..c35c8c4814 100644 --- a/src/Mvc/Mvc.Abstractions/src/ModelBinding/ModelBinderProviderContext.cs +++ b/src/Mvc/Mvc.Abstractions/src/ModelBinding/ModelBinderProviderContext.cs @@ -48,6 +48,6 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding /// /// Gets the . /// - public virtual IServiceProvider Services { get; } + public virtual IServiceProvider Services { get; } = default!; } } \ No newline at end of file diff --git a/src/Mvc/Mvc.Abstractions/src/ModelBinding/ModelBindingContext.cs b/src/Mvc/Mvc.Abstractions/src/ModelBinding/ModelBindingContext.cs index 915ea38085..3dfd4790f3 100644 --- a/src/Mvc/Mvc.Abstractions/src/ModelBinding/ModelBindingContext.cs +++ b/src/Mvc/Mvc.Abstractions/src/ModelBinding/ModelBindingContext.cs @@ -39,7 +39,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding /// /// Gets the associated with this context. /// - public virtual HttpContext HttpContext => ActionContext?.HttpContext; + public virtual HttpContext HttpContext => ActionContext?.HttpContext!; /// /// Gets or sets an indication that the current binder is handling the top-level object. @@ -71,7 +71,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding /// Gets or sets the name of the top-level model. This is not reset to when value /// providers have no match for that model. /// - public string OriginalModelName { get; protected set; } + public string OriginalModelName { get; protected set; } = default!; /// /// Gets or sets the used to capture values diff --git a/src/Mvc/Mvc.Abstractions/src/ModelBinding/ModelBindingResult.cs b/src/Mvc/Mvc.Abstractions/src/ModelBinding/ModelBindingResult.cs index 2bfc3dd5fd..3ab9c0ba4f 100644 --- a/src/Mvc/Mvc.Abstractions/src/ModelBinding/ModelBindingResult.cs +++ b/src/Mvc/Mvc.Abstractions/src/ModelBinding/ModelBindingResult.cs @@ -2,7 +2,6 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; -using Microsoft.Extensions.Internal; namespace Microsoft.AspNetCore.Mvc.ModelBinding { @@ -19,7 +18,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding { return new ModelBindingResult(model: null, isModelSet: false); } - + /// /// Creates a representing a successful model binding operation. /// @@ -27,10 +26,10 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding /// A representing a successful model bind. public static ModelBindingResult Success(object model) { - return new ModelBindingResult( model, isModelSet: true); + return new ModelBindingResult(model, isModelSet: true); } - private ModelBindingResult(object model, bool isModelSet) + private ModelBindingResult(object? model, bool isModelSet) { Model = model; IsModelSet = isModelSet; @@ -39,7 +38,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding /// /// Gets the model associated with this context. /// - public object Model { get; } + public object? Model { get; } /// /// @@ -53,7 +52,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding public bool IsModelSet { get; } /// - public override bool Equals(object obj) + public override bool Equals(object? obj) { var other = obj as ModelBindingResult?; if (other == null) @@ -69,11 +68,11 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding /// public override int GetHashCode() { - var hashCodeCombiner = HashCodeCombiner.Start(); + var hashCodeCombiner = new HashCode(); hashCodeCombiner.Add(IsModelSet); hashCodeCombiner.Add(Model); - return hashCodeCombiner.CombinedHash; + return hashCodeCombiner.ToHashCode(); } /// diff --git a/src/Mvc/Mvc.Abstractions/src/ModelBinding/ModelError.cs b/src/Mvc/Mvc.Abstractions/src/ModelBinding/ModelError.cs index 0473e20d5d..d30796e081 100644 --- a/src/Mvc/Mvc.Abstractions/src/ModelBinding/ModelError.cs +++ b/src/Mvc/Mvc.Abstractions/src/ModelBinding/ModelError.cs @@ -25,7 +25,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding /// /// The . /// The error message. - public ModelError(Exception exception, string errorMessage) + public ModelError(Exception exception, string? errorMessage) : this(errorMessage) { Exception = exception ?? throw new ArgumentNullException(nameof(exception)); @@ -35,7 +35,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding /// Initializes a new instance of with the specified . /// /// The error message. - public ModelError(string errorMessage) + public ModelError(string? errorMessage) { ErrorMessage = errorMessage ?? string.Empty; } @@ -43,7 +43,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding /// /// Gets the associated with this instance. /// - public Exception Exception { get; } + public Exception? Exception { get; } /// /// Gets the error message associated with this instance. diff --git a/src/Mvc/Mvc.Abstractions/src/ModelBinding/ModelMetadata.cs b/src/Mvc/Mvc.Abstractions/src/ModelBinding/ModelMetadata.cs index 4733f732cd..f04cac166e 100644 --- a/src/Mvc/Mvc.Abstractions/src/ModelBinding/ModelMetadata.cs +++ b/src/Mvc/Mvc.Abstractions/src/ModelBinding/ModelMetadata.cs @@ -17,7 +17,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding /// A metadata representation of a model type, property or parameter. /// [DebuggerDisplay("{DebuggerToString(),nq}")] - public abstract class ModelMetadata : IEquatable, IModelMetadataProvider + public abstract class ModelMetadata : IEquatable, IModelMetadataProvider { /// /// The default value of . @@ -40,7 +40,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding /// /// Gets the type containing the property if this metadata is for a property; otherwise. /// - public Type ContainerType => Identity.ContainerType; + public Type? ContainerType => Identity.ContainerType; /// /// Gets the metadata for if this metadata is for a property; @@ -68,17 +68,17 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding /// Gets the name of the parameter or property if this metadata is for a parameter or property; /// otherwise i.e. if this is the metadata for a type. /// - public string Name => Identity.Name; + public string? Name => Identity.Name; /// /// Gets the name of the parameter if this metadata is for a parameter; otherwise. /// - public string ParameterName => MetadataKind == ModelMetadataKind.Parameter ? Identity.Name : null; + public string? ParameterName => MetadataKind == ModelMetadataKind.Parameter ? Identity.Name : null; /// /// Gets the name of the property if this metadata is for a property; otherwise. /// - public string PropertyName => MetadataKind == ModelMetadataKind.Property ? Identity.Name : null; + public string? PropertyName => MetadataKind == ModelMetadataKind.Property ? Identity.Name : null; /// /// Gets the key for the current instance. @@ -155,7 +155,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding /// implements but not . null otherwise i.e. when /// is false. /// - public abstract ModelMetadata ElementMetadata { get; } + public abstract ModelMetadata? ElementMetadata { get; } /// /// Gets the ordered and grouped display names and values of all values in @@ -318,7 +318,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding /// validated. If null, properties with this are validated. /// /// Defaults to null. - public virtual IPropertyValidationFilter PropertyValidationFilter => null; + public virtual IPropertyValidationFilter? PropertyValidationFilter => null; /// /// Gets a value that indicates whether properties or elements of the model should be validated. @@ -343,7 +343,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding /// Gets the for elements of if that /// implements . /// - public Type ElementType { get; private set; } + public Type? ElementType { get; private set; } /// /// Gets a value indicating whether is a complex type. @@ -389,7 +389,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding /// /// Identical to unless is true. /// - public Type UnderlyingOrModelType { get; private set; } + public Type UnderlyingOrModelType { get; private set; } = default!; /// /// Gets a property getter delegate to get the property value from a model object. @@ -415,7 +415,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding } /// - public bool Equals(ModelMetadata other) + public bool Equals(ModelMetadata? other) { if (object.ReferenceEquals(this, other)) { @@ -433,7 +433,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding } /// - public override bool Equals(object obj) + public override bool Equals(object? obj) { return Equals(obj as ModelMetadata); } @@ -469,14 +469,14 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding else if (ModelType.IsArray) { IsEnumerableType = true; - ElementType = ModelType.GetElementType(); + ElementType = ModelType.GetElementType()!; } else { IsEnumerableType = true; var enumerableType = ClosedGenericMatcher.ExtractGenericInterface(ModelType, typeof(IEnumerable<>)); - ElementType = enumerableType?.GenericTypeArguments[0]; + ElementType = enumerableType?.GenericTypeArguments[0]!; if (ElementType == null) { @@ -497,7 +497,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding case ModelMetadataKind.Parameter: return $"ModelMetadata (Parameter: '{ParameterName}' Type: '{ModelType.Name}')"; case ModelMetadataKind.Property: - return $"ModelMetadata (Property: '{ContainerType.Name}.{PropertyName}' Type: '{ModelType.Name}')"; + return $"ModelMetadata (Property: '{ContainerType!.Name}.{PropertyName}' Type: '{ModelType.Name}')"; case ModelMetadataKind.Type: return $"ModelMetadata (Type: '{ModelType.Name}')"; default: diff --git a/src/Mvc/Mvc.Abstractions/src/ModelBinding/ModelPropertyCollection.cs b/src/Mvc/Mvc.Abstractions/src/ModelBinding/ModelPropertyCollection.cs index 733da709ba..797e1b9514 100644 --- a/src/Mvc/Mvc.Abstractions/src/ModelBinding/ModelPropertyCollection.cs +++ b/src/Mvc/Mvc.Abstractions/src/ModelBinding/ModelPropertyCollection.cs @@ -32,7 +32,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding /// The instance for the property specified by , or /// null if no match can be found. /// - public ModelMetadata this[string propertyName] + public ModelMetadata? this[string propertyName] { get { diff --git a/src/Mvc/Mvc.Abstractions/src/ModelBinding/ModelStateDictionary.cs b/src/Mvc/Mvc.Abstractions/src/ModelBinding/ModelStateDictionary.cs index 48b8b9ee3a..24581e0510 100644 --- a/src/Mvc/Mvc.Abstractions/src/ModelBinding/ModelStateDictionary.cs +++ b/src/Mvc/Mvc.Abstractions/src/ModelBinding/ModelStateDictionary.cs @@ -5,6 +5,7 @@ using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; +using System.Diagnostics.CodeAnalysis; using System.Runtime.CompilerServices; using Microsoft.AspNetCore.Mvc.Abstractions; using Microsoft.AspNetCore.Mvc.Formatters; @@ -166,7 +167,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding } TryGetValue(key, out var entry); - return entry; + return entry!; } } @@ -305,15 +306,15 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding } else if (entry == null) { - errorMessage = messageProvider.UnknownValueIsInvalidAccessor(name); + errorMessage = messageProvider.UnknownValueIsInvalidAccessor(name!); } else if (name == null) { - errorMessage = messageProvider.NonPropertyAttemptedValueIsInvalidAccessor(entry.AttemptedValue); + errorMessage = messageProvider.NonPropertyAttemptedValueIsInvalidAccessor(entry.AttemptedValue!); } else { - errorMessage = messageProvider.AttemptedValueIsInvalidAccessor(entry.AttemptedValue, name); + errorMessage = messageProvider.AttemptedValueIsInvalidAccessor(entry.AttemptedValue!, name); } return TryAddModelError(key, errorMessage); @@ -511,7 +512,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding /// /// The values of in a comma-separated . /// - public void SetModelValue(string key, object rawValue, string attemptedValue) + public void SetModelValue(string key, object? rawValue, string attemptedValue) { if (key == null) { @@ -540,7 +541,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding } // Avoid creating a new array for rawValue if there's only one value. - object rawValue; + object? rawValue; if (valueProviderResult == ValueProviderResult.None) { rawValue = null; @@ -573,10 +574,8 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding } } - private ModelStateNode GetNode(string key) + private ModelStateNode? GetNode(string key) { - Debug.Assert(key != null); - var current = _root; if (key.Length > 0) { @@ -661,7 +660,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding return new StringSegment(key, keyStart, index - keyStart); } - private static ModelValidationState? GetValidity(ModelStateNode node) + private static ModelValidationState? GetValidity(ModelStateNode? node) { if (node == null) { @@ -774,7 +773,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding } /// - public bool TryGetValue(string key, out ModelStateEntry value) + public bool TryGetValue(string key, [NotNullWhen(true)] out ModelStateEntry? value) { if (key == null) { @@ -893,11 +892,11 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding SubKey = subKey; } - public List ChildNodes { get; set; } + public List? ChildNodes { get; set; } - public override IReadOnlyList Children => ChildNodes; + public override IReadOnlyList? Children => ChildNodes; - public string Key { get; set; } + public string Key { get; set; } = default!; public StringSegment SubKey { get; } @@ -931,9 +930,9 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public ModelStateNode GetNode(StringSegment subKey) + public ModelStateNode? GetNode(StringSegment subKey) { - ModelStateNode modelStateNode = null; + ModelStateNode? modelStateNode = null; if (subKey.Length == 0) { modelStateNode = this; @@ -981,7 +980,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding return modelStateNode; } - public override ModelStateEntry GetModelStateForProperty(string propertyName) + public override ModelStateEntry? GetModelStateForProperty(string propertyName) => GetNode(new StringSegment(propertyName)); private int BinarySearch(StringSegment searchKey) @@ -1068,9 +1067,9 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding /// public struct Enumerator : IEnumerator> { - private readonly ModelStateNode _rootNode; + private readonly ModelStateNode? _rootNode; private ModelStateNode _modelStateNode; - private List _nodes; + private List? _nodes; private int _index; private bool _visitedRoot; @@ -1093,7 +1092,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding _index = -1; _rootNode = dictionary.GetNode(prefix); - _modelStateNode = null; + _modelStateNode = default!; _nodes = null; _visitedRoot = false; } @@ -1141,7 +1140,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding while (_nodes.Count > 0) { var node = _nodes[0]; - if (_index == node.ChildNodes.Count - 1) + if (_index == node.ChildNodes!.Count - 1) { // We've exhausted the current sublist. _nodes.RemoveAt(0); @@ -1173,9 +1172,9 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding public void Reset() { _index = -1; - _nodes.Clear(); + _nodes?.Clear(); _visitedRoot = false; - _modelStateNode = null; + _modelStateNode = default!; } } @@ -1218,7 +1217,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding public KeyEnumerator(ModelStateDictionary dictionary, string prefix) { _prefixEnumerator = new Enumerator(dictionary, prefix); - Current = null; + Current = default!; } /// @@ -1240,7 +1239,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding } else { - Current = null; + Current = default!; } return result; @@ -1250,7 +1249,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding public void Reset() { _prefixEnumerator.Reset(); - Current = null; + Current = default!; } } @@ -1293,7 +1292,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding public ValueEnumerator(ModelStateDictionary dictionary, string prefix) { _prefixEnumerator = new Enumerator(dictionary, prefix); - Current = null; + Current = default!; } /// @@ -1315,7 +1314,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding } else { - Current = null; + Current = default!; } return result; @@ -1325,7 +1324,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding public void Reset() { _prefixEnumerator.Reset(); - Current = null; + Current = default!; } } } diff --git a/src/Mvc/Mvc.Abstractions/src/ModelBinding/ModelStateEntry.cs b/src/Mvc/Mvc.Abstractions/src/ModelBinding/ModelStateEntry.cs index b73eab4f77..d56ef3dd81 100644 --- a/src/Mvc/Mvc.Abstractions/src/ModelBinding/ModelStateEntry.cs +++ b/src/Mvc/Mvc.Abstractions/src/ModelBinding/ModelStateEntry.cs @@ -10,17 +10,17 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding /// public abstract class ModelStateEntry { - private ModelErrorCollection _errors; + private ModelErrorCollection? _errors; /// /// Gets the raw value from the request associated with this entry. /// - public object RawValue { get; set; } + public object? RawValue { get; set; } /// /// Gets the set of values contained in , joined into a comma-separated string. /// - public string AttemptedValue { get; set; } + public string? AttemptedValue { get; set; } /// /// Gets the for this entry. @@ -61,7 +61,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding /// This method returns any existing entry, even those with with value /// . /// - public abstract ModelStateEntry GetModelStateForProperty(string propertyName); + public abstract ModelStateEntry? GetModelStateForProperty(string propertyName); /// /// Gets the values for sub-properties. @@ -70,6 +70,6 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding /// This property returns all existing entries, even those with with value /// . /// - public abstract IReadOnlyList Children { get; } + public abstract IReadOnlyList? Children { get; } } } diff --git a/src/Mvc/Mvc.Abstractions/src/ModelBinding/Validation/ClientValidatorItem.cs b/src/Mvc/Mvc.Abstractions/src/ModelBinding/Validation/ClientValidatorItem.cs index e346509701..be8552d8df 100644 --- a/src/Mvc/Mvc.Abstractions/src/ModelBinding/Validation/ClientValidatorItem.cs +++ b/src/Mvc/Mvc.Abstractions/src/ModelBinding/Validation/ClientValidatorItem.cs @@ -30,12 +30,12 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation /// /// Gets the metadata associated with the . /// - public object ValidatorMetadata { get; } + public object ValidatorMetadata { get; } = default!; /// /// Gets or sets the . /// - public IClientModelValidator Validator { get; set; } + public IClientModelValidator Validator { get; set; } = default!; /// /// Gets or sets a value indicating whether or not can be reused across requests. diff --git a/src/Mvc/Mvc.Abstractions/src/ModelBinding/Validation/ValidationEntry.cs b/src/Mvc/Mvc.Abstractions/src/ModelBinding/Validation/ValidationEntry.cs index a873273ca7..cedca096a4 100644 --- a/src/Mvc/Mvc.Abstractions/src/ModelBinding/Validation/ValidationEntry.cs +++ b/src/Mvc/Mvc.Abstractions/src/ModelBinding/Validation/ValidationEntry.cs @@ -10,8 +10,8 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation /// public struct ValidationEntry { - private object _model; - private Func _modelAccessor; + private object? _model; + private Func? _modelAccessor; /// /// Creates a new . @@ -79,7 +79,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation /// /// The model object. /// - public object Model + public object? Model { get { diff --git a/src/Mvc/Mvc.Abstractions/src/ModelBinding/Validation/ValidationStateDictionary.cs b/src/Mvc/Mvc.Abstractions/src/ModelBinding/Validation/ValidationStateDictionary.cs index 11179b014d..2d40811d5c 100644 --- a/src/Mvc/Mvc.Abstractions/src/ModelBinding/Validation/ValidationStateDictionary.cs +++ b/src/Mvc/Mvc.Abstractions/src/ModelBinding/Validation/ValidationStateDictionary.cs @@ -4,7 +4,7 @@ using System; using System.Collections; using System.Collections.Generic; -using System.Runtime.CompilerServices; +using System.Diagnostics.CodeAnalysis; namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation { @@ -25,8 +25,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation _inner = new Dictionary(ReferenceEqualityComparer.Instance); } - /// - public ValidationStateEntry this[object key] + public ValidationStateEntry? this[object key] { get { @@ -36,10 +35,19 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation set { - _inner[key] = value; + _inner[key] = value!; } } + /// + ValidationStateEntry IDictionary.this[object key] + { + get => this[key]!; + set => this[key] = value; + } + + ValidationStateEntry IReadOnlyDictionary.this[object key] => this[key]!; + /// public int Count => _inner.Count; @@ -115,7 +123,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation } /// - public bool TryGetValue(object key, out ValidationStateEntry value) + public bool TryGetValue(object key, [MaybeNullWhen(false)] out ValidationStateEntry value) { return _inner.TryGetValue(key, out value); } @@ -125,30 +133,5 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation { return ((IDictionary)_inner).GetEnumerator(); } - - private class ReferenceEqualityComparer : IEqualityComparer - { - private static readonly bool IsMono = Type.GetType("Mono.Runtime") != null; - - public static readonly ReferenceEqualityComparer Instance = new ReferenceEqualityComparer(); - - public new bool Equals(object x, object y) - { - return Object.ReferenceEquals(x, y); - } - - public int GetHashCode(object obj) - { - // RuntimeHelpers.GetHashCode sometimes crashes the runtime on Mono 4.0.4 - // See: https://github.com/aspnet/External/issues/45 - // The workaround here is to just not hash anything, and fall back to an equality check. - if (IsMono) - { - return 0; - } - - return RuntimeHelpers.GetHashCode(obj); - } - } } } \ No newline at end of file diff --git a/src/Mvc/Mvc.Abstractions/src/ModelBinding/Validation/ValidationStateEntry.cs b/src/Mvc/Mvc.Abstractions/src/ModelBinding/Validation/ValidationStateEntry.cs index 970cbb8dfa..ee94334283 100644 --- a/src/Mvc/Mvc.Abstractions/src/ModelBinding/Validation/ValidationStateEntry.cs +++ b/src/Mvc/Mvc.Abstractions/src/ModelBinding/Validation/ValidationStateEntry.cs @@ -12,12 +12,12 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation /// /// Gets or sets the model prefix associated with the entry. /// - public string Key { get; set; } + public string Key { get; set; } = default!; /// /// Gets or sets the associated with the entry. /// - public ModelMetadata Metadata { get; set; } + public ModelMetadata Metadata { get; set; } = default!; /// /// Gets or sets a value indicating whether the associated model object should be validated. @@ -28,6 +28,6 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation /// Gets or sets an for enumerating child entries of the associated /// model object. /// - public IValidationStrategy Strategy { get; set; } + public IValidationStrategy Strategy { get; set; } = default!; } } diff --git a/src/Mvc/Mvc.Abstractions/src/ModelBinding/Validation/ValidatorItem.cs b/src/Mvc/Mvc.Abstractions/src/ModelBinding/Validation/ValidatorItem.cs index 8592eeca71..ca8b291e1a 100644 --- a/src/Mvc/Mvc.Abstractions/src/ModelBinding/Validation/ValidatorItem.cs +++ b/src/Mvc/Mvc.Abstractions/src/ModelBinding/Validation/ValidatorItem.cs @@ -30,12 +30,12 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation /// /// Gets the metadata associated with the . /// - public object ValidatorMetadata { get; } + public object ValidatorMetadata { get; } = default!; /// /// Gets or sets the . /// - public IModelValidator Validator { get; set; } + public IModelValidator Validator { get; set; } = default!; /// /// Gets or sets a value indicating whether or not can be reused across requests. diff --git a/src/Mvc/Mvc.Abstractions/src/ModelBinding/ValueProviderResult.cs b/src/Mvc/Mvc.Abstractions/src/ModelBinding/ValueProviderResult.cs index 3a0b8e1fa8..e5b088b4a0 100644 --- a/src/Mvc/Mvc.Abstractions/src/ModelBinding/ValueProviderResult.cs +++ b/src/Mvc/Mvc.Abstractions/src/ModelBinding/ValueProviderResult.cs @@ -69,7 +69,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding /// to get a single value for processing regardless of whether a single or multiple values were provided /// in the request. /// - public string FirstValue + public string? FirstValue { get { @@ -87,7 +87,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding public int Length => Values.Count; /// - public override bool Equals(object obj) + public override bool Equals(object? obj) { var other = obj as ValueProviderResult?; return other.HasValue && Equals(other.Value); diff --git a/src/Mvc/Mvc.Abstractions/src/Routing/AttributeRouteInfo.cs b/src/Mvc/Mvc.Abstractions/src/Routing/AttributeRouteInfo.cs index f2fc4ea77b..1aae06847e 100644 --- a/src/Mvc/Mvc.Abstractions/src/Routing/AttributeRouteInfo.cs +++ b/src/Mvc/Mvc.Abstractions/src/Routing/AttributeRouteInfo.cs @@ -13,7 +13,7 @@ namespace Microsoft.AspNetCore.Mvc.Routing /// /// The route template. May be null if the action has no attribute routes. /// - public string Template { get; set; } + public string? Template { get; set; } /// /// Gets the order of the route associated with a given action. This property determines @@ -27,7 +27,7 @@ namespace Microsoft.AspNetCore.Mvc.Routing /// to generate a link by referring to the route by name instead of attempting to match a /// route by provided route data. /// - public string Name { get; set; } + public string Name { get; set; } = default!; /// /// Gets or sets a value that determines if the route entry associated with this model participates in link generation. diff --git a/src/Mvc/Mvc.Abstractions/src/Routing/UrlActionContext.cs b/src/Mvc/Mvc.Abstractions/src/Routing/UrlActionContext.cs index 8260b6b680..09853000d0 100644 --- a/src/Mvc/Mvc.Abstractions/src/Routing/UrlActionContext.cs +++ b/src/Mvc/Mvc.Abstractions/src/Routing/UrlActionContext.cs @@ -11,7 +11,7 @@ namespace Microsoft.AspNetCore.Mvc.Routing /// /// The name of the action method that uses to generate URLs. /// - public string Action + public string? Action { get; set; @@ -20,7 +20,7 @@ namespace Microsoft.AspNetCore.Mvc.Routing /// /// The name of the controller that uses to generate URLs. /// - public string Controller + public string? Controller { get; set; @@ -30,7 +30,7 @@ namespace Microsoft.AspNetCore.Mvc.Routing /// The object that contains the route values that /// uses to generate URLs. /// - public object Values + public object? Values { get; set; @@ -40,7 +40,7 @@ namespace Microsoft.AspNetCore.Mvc.Routing /// The protocol for the URLs that generates, /// such as "http" or "https" /// - public string Protocol + public string? Protocol { get; set; @@ -49,7 +49,7 @@ namespace Microsoft.AspNetCore.Mvc.Routing /// /// The host name for the URLs that generates. /// - public string Host + public string? Host { get; set; @@ -58,7 +58,7 @@ namespace Microsoft.AspNetCore.Mvc.Routing /// /// The fragment for the URLs that generates. /// - public string Fragment + public string? Fragment { get; set; diff --git a/src/Mvc/Mvc.Abstractions/src/Routing/UrlRouteContext.cs b/src/Mvc/Mvc.Abstractions/src/Routing/UrlRouteContext.cs index 706414f958..d713e69212 100644 --- a/src/Mvc/Mvc.Abstractions/src/Routing/UrlRouteContext.cs +++ b/src/Mvc/Mvc.Abstractions/src/Routing/UrlRouteContext.cs @@ -11,7 +11,7 @@ namespace Microsoft.AspNetCore.Mvc.Routing /// /// The name of the route that uses to generate URLs. /// - public string RouteName + public string? RouteName { get; set; @@ -21,7 +21,7 @@ namespace Microsoft.AspNetCore.Mvc.Routing /// The object that contains the route values that /// uses to generate URLs. /// - public object Values + public object? Values { get; set; @@ -31,7 +31,7 @@ namespace Microsoft.AspNetCore.Mvc.Routing /// The protocol for the URLs that generates, /// such as "http" or "https" /// - public string Protocol + public string? Protocol { get; set; @@ -40,7 +40,7 @@ namespace Microsoft.AspNetCore.Mvc.Routing /// /// The host name for the URLs that generates. /// - public string Host + public string? Host { get; set; @@ -49,7 +49,7 @@ namespace Microsoft.AspNetCore.Mvc.Routing /// /// The fragment for the URLs that generates. /// - public string Fragment + public string? Fragment { get; set; diff --git a/src/Mvc/Mvc.ApiExplorer/src/DefaultApiDescriptionProvider.cs b/src/Mvc/Mvc.ApiExplorer/src/DefaultApiDescriptionProvider.cs index bbc1f86ef1..73a4c35492 100644 --- a/src/Mvc/Mvc.ApiExplorer/src/DefaultApiDescriptionProvider.cs +++ b/src/Mvc/Mvc.ApiExplorer/src/DefaultApiDescriptionProvider.cs @@ -662,11 +662,11 @@ namespace Microsoft.AspNetCore.Mvc.ApiExplorer public int GetHashCode(PropertyKey obj) { - var hashCodeCombiner = HashCodeCombiner.Start(); + var hashCodeCombiner = new HashCode(); hashCodeCombiner.Add(obj.ContainerType); hashCodeCombiner.Add(obj.PropertyName); hashCodeCombiner.Add(obj.Source); - return hashCodeCombiner.CombinedHash; + return hashCodeCombiner.ToHashCode(); } } } diff --git a/src/Mvc/Mvc.Core/src/ModelBinding/ModelBinderFactory.cs b/src/Mvc/Mvc.Core/src/ModelBinding/ModelBinderFactory.cs index 1cd59d4c72..180fb433e1 100644 --- a/src/Mvc/Mvc.Core/src/ModelBinding/ModelBinderFactory.cs +++ b/src/Mvc/Mvc.Core/src/ModelBinding/ModelBinderFactory.cs @@ -319,10 +319,10 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding public override int GetHashCode() { - var hash = new HashCodeCombiner(); + var hash = new HashCode(); hash.Add(_metadata); hash.Add(RuntimeHelpers.GetHashCode(_token)); - return hash; + return hash.ToHashCode(); } public override string ToString() diff --git a/src/Mvc/Mvc.Core/src/Routing/AttributeRoute.cs b/src/Mvc/Mvc.Core/src/Routing/AttributeRoute.cs index da0fc4594e..185e77fb58 100644 --- a/src/Mvc/Mvc.Core/src/Routing/AttributeRoute.cs +++ b/src/Mvc/Mvc.Core/src/Routing/AttributeRoute.cs @@ -291,10 +291,10 @@ namespace Microsoft.AspNetCore.Mvc.Routing return 0; } - var hash = new HashCodeCombiner(); + var hash = new HashCode(); hash.Add(obj.Order); hash.Add(obj.RouteTemplate.TemplateText, StringComparer.OrdinalIgnoreCase); - return hash; + return hash.ToHashCode(); } } diff --git a/src/Mvc/Mvc.Razor/src/RazorPageActivator.cs b/src/Mvc/Mvc.Razor/src/RazorPageActivator.cs index 9acc858e5a..49eb5c05a9 100644 --- a/src/Mvc/Mvc.Razor/src/RazorPageActivator.cs +++ b/src/Mvc/Mvc.Razor/src/RazorPageActivator.cs @@ -123,14 +123,14 @@ namespace Microsoft.AspNetCore.Mvc.Razor public override int GetHashCode() { - var hashCodeCombiner = HashCodeCombiner.Start(); + var hashCodeCombiner = new HashCode(); hashCodeCombiner.Add(PageType); if (ProvidedModelType != null) { hashCodeCombiner.Add(ProvidedModelType); } - return hashCodeCombiner.CombinedHash; + return hashCodeCombiner.ToHashCode(); } } } diff --git a/src/Mvc/Mvc.Razor/src/ViewLocationCacheKey.cs b/src/Mvc/Mvc.Razor/src/ViewLocationCacheKey.cs index 2640110dd5..140b55ba9e 100644 --- a/src/Mvc/Mvc.Razor/src/ViewLocationCacheKey.cs +++ b/src/Mvc/Mvc.Razor/src/ViewLocationCacheKey.cs @@ -135,7 +135,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor /// public override int GetHashCode() { - var hashCodeCombiner = HashCodeCombiner.Start(); + var hashCodeCombiner = new HashCode(); hashCodeCombiner.Add(IsMainPage ? 1 : 0); hashCodeCombiner.Add(ViewName, StringComparer.Ordinal); hashCodeCombiner.Add(ControllerName, StringComparer.Ordinal); @@ -151,7 +151,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor } } - return hashCodeCombiner; + return hashCodeCombiner.ToHashCode(); } } } diff --git a/src/Mvc/Mvc.TagHelpers/src/Cache/CacheTagKey.cs b/src/Mvc/Mvc.TagHelpers/src/Cache/CacheTagKey.cs index bf327f30ca..f527f8f55f 100644 --- a/src/Mvc/Mvc.TagHelpers/src/Cache/CacheTagKey.cs +++ b/src/Mvc/Mvc.TagHelpers/src/Cache/CacheTagKey.cs @@ -247,7 +247,7 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers.Cache return _hashcode.Value; } - var hashCodeCombiner = new HashCodeCombiner(); + var hashCodeCombiner = new HashCode(); hashCodeCombiner.Add(Key, StringComparer.Ordinal); hashCodeCombiner.Add(_expiresAfter); @@ -258,12 +258,12 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers.Cache hashCodeCombiner.Add(_requestCulture); hashCodeCombiner.Add(_requestUICulture); - CombineCollectionHashCode(hashCodeCombiner, VaryByCookieName, _cookies); - CombineCollectionHashCode(hashCodeCombiner, VaryByHeaderName, _headers); - CombineCollectionHashCode(hashCodeCombiner, VaryByQueryName, _queries); - CombineCollectionHashCode(hashCodeCombiner, VaryByRouteName, _routeValues); + CombineCollectionHashCode(ref hashCodeCombiner, VaryByCookieName, _cookies); + CombineCollectionHashCode(ref hashCodeCombiner, VaryByHeaderName, _headers); + CombineCollectionHashCode(ref hashCodeCombiner, VaryByQueryName, _queries); + CombineCollectionHashCode(ref hashCodeCombiner, VaryByRouteName, _routeValues); - _hashcode = hashCodeCombiner.CombinedHash; + _hashcode = hashCodeCombiner.ToHashCode(); return _hashcode.Value; } @@ -331,7 +331,7 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers.Cache } private static void CombineCollectionHashCode( - HashCodeCombiner hashCodeCombiner, + ref HashCode hashCodeCombiner, string collectionName, IList> values) { diff --git a/src/Mvc/Mvc.TagHelpers/src/GlobbingUrlBuilder.cs b/src/Mvc/Mvc.TagHelpers/src/GlobbingUrlBuilder.cs index 82c176bc8b..e0a04a5374 100644 --- a/src/Mvc/Mvc.TagHelpers/src/GlobbingUrlBuilder.cs +++ b/src/Mvc/Mvc.TagHelpers/src/GlobbingUrlBuilder.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; +using System.Security.Policy; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.FileProviders; @@ -373,11 +374,11 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers public override int GetHashCode() { - var hashCodeCombiner = HashCodeCombiner.Start(); + var hashCodeCombiner = new HashCode(); hashCodeCombiner.Add(Include); hashCodeCombiner.Add(Exclude); - return hashCodeCombiner.CombinedHash; + return hashCodeCombiner.ToHashCode(); } } } diff --git a/src/Mvc/Mvc.ViewFeatures/src/LambdaExpressionComparer.cs b/src/Mvc/Mvc.ViewFeatures/src/LambdaExpressionComparer.cs index 1e0dcc7fe7..e3448c15c0 100644 --- a/src/Mvc/Mvc.ViewFeatures/src/LambdaExpressionComparer.cs +++ b/src/Mvc/Mvc.ViewFeatures/src/LambdaExpressionComparer.cs @@ -84,7 +84,7 @@ namespace Microsoft.AspNetCore.Mvc.ViewFeatures public int GetHashCode(LambdaExpression lambdaExpression) { var expression = lambdaExpression.Body; - var hashCodeCombiner = HashCodeCombiner.Start(); + var hashCodeCombiner = new HashCode(); while (true) { @@ -107,7 +107,7 @@ namespace Microsoft.AspNetCore.Mvc.ViewFeatures } } - return hashCodeCombiner.CombinedHash; + return hashCodeCombiner.ToHashCode(); } } } diff --git a/src/Mvc/Mvc.ViewFeatures/src/MemberExpressionCacheKeyComparer.cs b/src/Mvc/Mvc.ViewFeatures/src/MemberExpressionCacheKeyComparer.cs index 5911611c89..b1586e71ba 100644 --- a/src/Mvc/Mvc.ViewFeatures/src/MemberExpressionCacheKeyComparer.cs +++ b/src/Mvc/Mvc.ViewFeatures/src/MemberExpressionCacheKeyComparer.cs @@ -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 System.Collections.Generic; using Microsoft.Extensions.Internal; @@ -39,7 +40,7 @@ namespace Microsoft.AspNetCore.Mvc.ViewFeatures public int GetHashCode(MemberExpressionCacheKey obj) { - var hashCodeCombiner = new HashCodeCombiner(); + var hashCodeCombiner = new HashCode(); hashCodeCombiner.Add(obj.ModelType); foreach (var member in obj) @@ -47,7 +48,7 @@ namespace Microsoft.AspNetCore.Mvc.ViewFeatures hashCodeCombiner.Add(member); } - return hashCodeCombiner.CombinedHash; + return hashCodeCombiner.ToHashCode(); } } } diff --git a/src/Shared/ClosedGenericMatcher/ClosedGenericMatcher.cs b/src/Shared/ClosedGenericMatcher/ClosedGenericMatcher.cs index f234c2edbc..fc41de2069 100644 --- a/src/Shared/ClosedGenericMatcher/ClosedGenericMatcher.cs +++ b/src/Shared/ClosedGenericMatcher/ClosedGenericMatcher.cs @@ -1,8 +1,9 @@ // 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. +#nullable enable + using System; -using System.Linq; using System.Reflection; namespace Microsoft.Extensions.Internal @@ -28,7 +29,7 @@ namespace Microsoft.Extensions.Internal /// typeof(KeyValuePair{,}), and is /// typeof(KeyValuePair{string, object}). /// - public static Type ExtractGenericInterface(Type queryType, Type interfaceType) + public static Type? ExtractGenericInterface(Type queryType, Type interfaceType) { if (queryType == null) { @@ -62,9 +63,9 @@ namespace Microsoft.Extensions.Internal candidate.GetGenericTypeDefinition() == interfaceType; } - private static Type GetGenericInstantiation(Type queryType, Type interfaceType) + private static Type? GetGenericInstantiation(Type queryType, Type interfaceType) { - Type bestMatch = null; + Type? bestMatch = null; var interfaces = queryType.GetInterfaces(); foreach (var @interface in interfaces) { @@ -103,4 +104,4 @@ namespace Microsoft.Extensions.Internal } } } -} \ No newline at end of file +}