以下是一个通用的静态方法,它接受一个字符串并返回一个枚举类型(enum)。因为我将 ignoreCase 参数设置为 true,所以它可以很好地忽略大小写。
但是,我还想测试枚举值是否存在,但似乎没有一个 ignoreCase 参数的 enum.IsDefined 方法来实现这一点。
如何在测试枚举定义时忽略大小写呢?
但是,我还想测试枚举值是否存在,但似乎没有一个 ignoreCase 参数的 enum.IsDefined 方法来实现这一点。
如何在测试枚举定义时忽略大小写呢?
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
}
}