| File: Formatters\InputFormatterResult.cs | Web Access |
| Project: src\aspnetcore\src\Mvc\Mvc.Abstractions\src\Microsoft.AspNetCore.Mvc.Abstractions.csproj (Microsoft.AspNetCore.Mvc.Abstractions) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. namespace Microsoft.AspNetCore.Mvc.Formatters; /// <summary> /// Result of a <see cref="IInputFormatter.ReadAsync"/> operation. /// </summary> public class InputFormatterResult { private static readonly InputFormatterResult _failure = new InputFormatterResult(hasError: true); private static readonly InputFormatterResult _noValue = new InputFormatterResult(hasError: false); private static readonly Task<InputFormatterResult> _failureAsync = Task.FromResult(_failure); private static readonly Task<InputFormatterResult> _noValueAsync = Task.FromResult(_noValue); private InputFormatterResult(bool hasError) { HasError = hasError; } private InputFormatterResult(object? model) { Model = model; IsModelSet = true; } /// <summary> /// Gets an indication whether the <see cref="IInputFormatter.ReadAsync"/> operation had an error. /// </summary> public bool HasError { get; } /// <summary> /// Gets an indication whether a value for the <see cref="Model"/> property was supplied. /// </summary> public bool IsModelSet { get; } /// <summary> /// Gets the deserialized <see cref="object"/>. /// </summary> /// <value> /// <c>null</c> if <see cref="HasError"/> is <c>true</c>. /// </value> public object? Model { get; } /// <summary> /// Returns an <see cref="InputFormatterResult"/> indicating the <see cref="IInputFormatter.ReadAsync"/> /// operation failed. /// </summary> /// <returns> /// An <see cref="InputFormatterResult"/> indicating the <see cref="IInputFormatter.ReadAsync"/> /// operation failed i.e. with <see cref="HasError"/> <c>true</c>. /// </returns> public static InputFormatterResult Failure() { return _failure; } /// <summary> /// Returns a <see cref="Task"/> that on completion provides an <see cref="InputFormatterResult"/> indicating /// the <see cref="IInputFormatter.ReadAsync"/> operation failed. /// </summary> /// <returns> /// A <see cref="Task"/> that on completion provides an <see cref="InputFormatterResult"/> indicating the /// <see cref="IInputFormatter.ReadAsync"/> operation failed i.e. with <see cref="HasError"/> <c>true</c>. /// </returns> public static Task<InputFormatterResult> FailureAsync() { return _failureAsync; } /// <summary> /// Returns an <see cref="InputFormatterResult"/> indicating the <see cref="IInputFormatter.ReadAsync"/> /// operation was successful. /// </summary> /// <param name="model">The deserialized <see cref="object"/>.</param> /// <returns> /// An <see cref="InputFormatterResult"/> indicating the <see cref="IInputFormatter.ReadAsync"/> /// operation succeeded i.e. with <see cref="HasError"/> <c>false</c>. /// </returns> public static InputFormatterResult Success(object? model) { return new InputFormatterResult(model); } /// <summary> /// Returns a <see cref="Task"/> that on completion provides an <see cref="InputFormatterResult"/> indicating /// the <see cref="IInputFormatter.ReadAsync"/> operation was successful. /// </summary> /// <param name="model">The deserialized <see cref="object"/>.</param> /// <returns> /// A <see cref="Task"/> that on completion provides an <see cref="InputFormatterResult"/> indicating the /// <see cref="IInputFormatter.ReadAsync"/> operation succeeded i.e. with <see cref="HasError"/> <c>false</c>. /// </returns> public static Task<InputFormatterResult> SuccessAsync(object? model) { return Task.FromResult(Success(model)); } /// <summary> /// Returns an <see cref="InputFormatterResult"/> indicating the <see cref="IInputFormatter.ReadAsync"/> /// operation produced no value. /// </summary> /// <returns> /// An <see cref="InputFormatterResult"/> indicating the <see cref="IInputFormatter.ReadAsync"/> /// operation produced no value. /// </returns> public static InputFormatterResult NoValue() { return _noValue; } /// <summary> /// Returns a <see cref="Task"/> that on completion provides an <see cref="InputFormatterResult"/> indicating /// the <see cref="IInputFormatter.ReadAsync"/> operation produced no value. /// </summary> /// <returns> /// A <see cref="Task"/> that on completion provides an <see cref="InputFormatterResult"/> indicating the /// <see cref="IInputFormatter.ReadAsync"/> operation produced no value. /// </returns> public static Task<InputFormatterResult> NoValueAsync() { return _noValueAsync; } }