Следующий общий статический метод принимает строку и возвращает перечисление.
Это красиво игнорирует регистр, поскольку я устанавливаю для параметра ignoreCase значение true.
Однако я также хочу проверить, существует ли перечисление, но метод enum.IsDefined для этого не имеет параметра ignoreCase. p >
Как я могу проверить, определено ли перечисление или нет, и в том же случае игнорировать?
using System;
namespace TestEnum2934234
{
class Program
{
static void Main(string[] args)
{
LessonStatus lessonStatus = StringHelpers.ConvertStringToEnum<LessonStatus>("prepared");
ReportStatus reportStatus = StringHelpers.ConvertStringToEnum<ReportStatus>("finished");
Console.WriteLine(lessonStatus.ToString());
Console.WriteLine(reportStatus.ToString());
Console.ReadLine();
}
}
public static class StringHelpers
{
public static T ConvertStringToEnum<T>(string text)
{
if (Enum.IsDefined(typeof(T), text)) //does not have ignoreCase parameter
return (T)Enum.Parse(typeof(T), text, true);
else
return default(T);
}
}
public enum LessonStatus
{
Defined,
Prepared,
Practiced,
Recorded
}
public enum ReportStatus
{
Draft,
Revising,
Finished
}
}