Files
SuperVPN/output/Libraries/BouncyCastle.Crypto/Org/BouncyCastle/Utilities/Enums.cs
2025-10-09 09:57:24 +09:00

44 lines
1.0 KiB
C#

using System;
using Org.BouncyCastle.Utilities.Date;
namespace Org.BouncyCastle.Utilities;
internal abstract class Enums
{
internal static Enum GetEnumValue(Type enumType, string s)
{
if (!IsEnumType(enumType))
{
throw new ArgumentException("Not an enumeration type", "enumType");
}
if (s.Length > 0 && char.IsLetter(s[0]) && s.IndexOf(',') < 0)
{
s = s.Replace('-', '_');
s = s.Replace('/', '_');
return (Enum)Enum.Parse(enumType, s, ignoreCase: false);
}
throw new ArgumentException();
}
internal static Array GetEnumValues(Type enumType)
{
if (!IsEnumType(enumType))
{
throw new ArgumentException("Not an enumeration type", "enumType");
}
return Enum.GetValues(enumType);
}
internal static Enum GetArbitraryValue(Type enumType)
{
Array enumValues = GetEnumValues(enumType);
int index = (int)(DateTimeUtilities.CurrentUnixMs() & 0x7FFFFFFF) % enumValues.Length;
return (Enum)enumValues.GetValue(index);
}
internal static bool IsEnumType(Type t)
{
return t.IsEnum;
}
}