<PackageReference Include="NUnit" Version="4.1.0" />

Result<T>

struct Result<T>
using System; using System.Runtime.CompilerServices; namespace NUnit.Framework { [System.Runtime.CompilerServices.NullableContext(2)] [System.Runtime.CompilerServices.Nullable(0)] internal struct Result<T> { private readonly T _value; private readonly string _errorMessage; public T Value { get { if (_errorMessage != null) throw new InvalidOperationException("The result is not success."); return _value; } } private Result(T value, string errorMessage) { _value = value; _errorMessage = errorMessage; } [return: System.Runtime.CompilerServices.Nullable(new byte[] { 0, 1 })] public static Result<T> Success(T value) { return new Result<T>(value, null); } [System.Runtime.CompilerServices.NullableContext(1)] [return: System.Runtime.CompilerServices.Nullable(new byte[] { 0, 1 })] public static Result<T> Error(string message) { if (string.IsNullOrEmpty(message)) throw new ArgumentException("Error message must be specified.", "message"); return new Result<T>(default(T), message); } public bool IsSuccess(out T value) { value = _value; return _errorMessage == null; } public bool IsError(out string message) { message = _errorMessage; return _errorMessage != null; } public static implicit operator Result<T>(T value) { return Success(value); } public static implicit operator Result<T>(string value) { return Error(value); } } }