| File: Types\DevicePlatform.shared.cs | Web Access |
| Project: src\src\Essentials\src\Essentials.csproj (Microsoft.Maui.Essentials) |
using System; namespace Microsoft.Maui.Devices { /// <summary> /// Represents the device platform that the application is running on. /// </summary> public readonly struct DevicePlatform : IEquatable<DevicePlatform> { readonly string devicePlatform; /// <summary> /// Gets an instance of <see cref="DevicePlatform"/> that represents Android. /// </summary> public static DevicePlatform Android { get; } = new DevicePlatform(nameof(Android)); /// <summary> /// Gets an instance of <see cref="DevicePlatform"/> that represents iOS. /// </summary> public static DevicePlatform iOS { get; } = new DevicePlatform(nameof(iOS)); /// <summary> /// Gets an instance of <see cref="DevicePlatform"/> that represents macOS. /// </summary> /// <remarks>Note, this is different than <see cref="MacCatalyst"/>.</remarks> public static DevicePlatform macOS { get; } = new DevicePlatform(nameof(macOS)); /// <summary> /// Gets an instance of <see cref="DevicePlatform"/> that represents Mac Catalyst. /// </summary> /// <remarks>Note, this is different than <see cref="macOS"/>.</remarks> public static DevicePlatform MacCatalyst { get; } = new DevicePlatform(nameof(MacCatalyst)); /// <summary> /// Gets an instance of <see cref="DevicePlatform"/> that represents Apple tvOS. /// </summary> public static DevicePlatform tvOS { get; } = new DevicePlatform(nameof(tvOS)); /// <summary> /// Gets an instance of <see cref="DevicePlatform"/> that represents Samsung Tizen. /// </summary> public static DevicePlatform Tizen { get; } = new DevicePlatform(nameof(Tizen)); /// <summary> /// Gets an instance of <see cref="DevicePlatform"/> that represents UWP. /// </summary> [Obsolete("Use WinUI instead.")] public static DevicePlatform UWP { get; } = new DevicePlatform(nameof(WinUI)); /// <summary> /// Gets an instance of <see cref="DevicePlatform"/> that represents WinUI. /// </summary> public static DevicePlatform WinUI { get; } = new DevicePlatform(nameof(WinUI)); /// <summary> /// Gets an instance of <see cref="DevicePlatform"/> that represents Apple watchOS. /// </summary> public static DevicePlatform watchOS { get; } = new DevicePlatform(nameof(watchOS)); /// <summary> /// Gets an instance of <see cref="DevicePlatform"/> that represents an unknown platform. This is used for when the current platform is unknown. /// </summary> public static DevicePlatform Unknown { get; } = new DevicePlatform(nameof(Unknown)); DevicePlatform(string devicePlatform) { if (devicePlatform == null) throw new ArgumentNullException(nameof(devicePlatform)); if (devicePlatform.Length == 0) throw new ArgumentException(nameof(devicePlatform)); this.devicePlatform = devicePlatform; } /// <summary> /// Creates a new device platform instance. This can be used to define your custom platforms. /// </summary> /// <param name="devicePlatform">The device platform identifier.</param> /// <returns>A new instance of <see cref="DevicePlatform"/> with the specified platform identifier.</returns> public static DevicePlatform Create(string devicePlatform) => new DevicePlatform(devicePlatform); /// <summary> /// Compares the underlying <see cref="DevicePlatform"/> instances. /// </summary> /// <param name="other"><see cref="DevicePlatform"/> object to compare with.</param> /// <returns><see langword="true"/> if they are equal, otherwise <see langword="false"/>.</returns> public bool Equals(DevicePlatform other) => Equals(other.devicePlatform); internal bool Equals(string other) => string.Equals(devicePlatform, other, StringComparison.Ordinal); /// <inheritdoc cref="IEquatable{T}.Equals(T)"/> public override bool Equals(object obj) => obj is DevicePlatform && Equals((DevicePlatform)obj); /// <summary> /// Gets the hash code for this platform instance. /// </summary> /// <returns>The computed hash code for this device platform or <c>0</c> when the device platform is <see langword="null"/>.</returns> public override int GetHashCode() => devicePlatform == null ? 0 : devicePlatform.GetHashCode( #if !NETSTANDARD2_0 StringComparison.Ordinal #endif ); /// <summary> /// Returns a string representation of the current value of the device platform. /// </summary> /// <returns>A string representation of this instance in the format of <c>{device platform}</c> or an empty string when no device platform is set.</returns> public override string ToString() => devicePlatform ?? string.Empty; /// <summary> /// Equality operator for equals. /// </summary> /// <param name="left">Left to compare.</param> /// <param name="right">Right to compare.</param> /// <returns><see langword="true"/> if objects are equal, otherwise <see langword="false"/>.</returns> public static bool operator ==(DevicePlatform left, DevicePlatform right) => left.Equals(right); /// <summary> /// Inequality operator. /// </summary> /// <param name="left">Left to compare.</param> /// <param name="right">Right to compare.</param> /// <returns><see langword="true"/> if objects are not equal, otherwise <see langword="false"/>.</returns> public static bool operator !=(DevicePlatform left, DevicePlatform right) => !left.Equals(right); } }