mirror of
https://github.com/Sarsoo/Spotify.NET.git
synced 2024-12-23 22:56:25 +00:00
42 lines
1.0 KiB
C#
42 lines
1.0 KiB
C#
using System;
|
|
#if !NETSTANDARD2_0
|
|
using System.Diagnostics.CodeAnalysis;
|
|
#endif
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
|
|
namespace SpotifyAPI.Web
|
|
{
|
|
[AttributeUsage(AttributeTargets.Field)]
|
|
public sealed class StringAttribute : Attribute
|
|
{
|
|
public StringAttribute(string value)
|
|
{
|
|
Value = value;
|
|
}
|
|
|
|
public string Value { get; }
|
|
|
|
#if NETSTANDARD2_1_OR_GREATER || NET5_0_OR_GREATER
|
|
public static bool GetValue(Type enumType, Enum enumValue, [NotNullWhen(true)] out string? result)
|
|
#else
|
|
public static bool GetValue(Type enumType, Enum enumValue, out string? result)
|
|
#endif
|
|
{
|
|
Ensure.ArgumentNotNull(enumType, nameof(enumType));
|
|
Ensure.ArgumentNotNull(enumValue, nameof(enumValue));
|
|
|
|
if (enumType
|
|
.GetMember(enumValue.ToString())[0]
|
|
.GetCustomAttributes(typeof(StringAttribute))
|
|
.FirstOrDefault() is StringAttribute stringAttr)
|
|
{
|
|
result = stringAttr.Value;
|
|
return true;
|
|
}
|
|
result = null;
|
|
return false;
|
|
}
|
|
}
|
|
}
|