File: Primitives\RetrievePlatformValueRequest.cs
Web Access
Project: src\src\Core\src\Core.csproj (Microsoft.Maui)
#nullable enable
using System;
 
namespace Microsoft.Maui
{
	/// <summary>
	/// Specifies a request for the retrieval of a platform value.
	/// </summary>
	public class RetrievePlatformValueRequest<T>
	{
		bool _hasResult;
		T? _result;
 
		/// <summary>
		/// The result of the retrieval operation.
		/// </summary>
		public T Result => _hasResult ? _result! : throw new InvalidOperationException("No result value was set.");
 
		/// <summary>
		/// Sets the result value of the retrieval operation.
		/// </summary>
		/// <param name="result">The result value to set on this request.</param>
		/// <exception cref="InvalidOperationException">The result has already been set.</exception>
		public void SetResult(T result)
		{
			if (_hasResult)
				throw new InvalidOperationException("Request already had a result value set.");
 
			_result = result;
			_hasResult = true;
		}
 
		/// <summary>
		/// Attempts to set the result value of the retrieval operation.
		/// </summary>
		/// <param name="result">The result value to set on this request.</param>
		/// <returns>true if the operation was successful; otherwise, false.</returns>
		public bool TrySetResult(T result)
		{
			if (_hasResult)
				return false;
 
			_result = result;
			_hasResult = true;
 
			return true;
		}
	}
}