Phương pháp tĩnh chung sau đây cần có một số chuỗi và trả lại enum.Làm thế nào tôi có thể kiểm tra nếu một enum được xác định hay không trong khi bỏ qua trường hợp?
Thật độc đáo bỏ qua trường hợp vì tôi đặt thông số ignoreCase thành true.
Tuy nhiên, tôi cũng muốn kiểm tra nếu enum tồn tại, nhưng phương pháp enum.IsDefined để làm điều này dường như không có một tham sốIgnoreCase.
Làm cách nào để kiểm tra xem enum có được xác định hay không và trong cùng một trường hợp bỏ qua?
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
}
}
Bạn có thể muốn xem xét giá trị mặc định là Không cho thư mục của bạn. Bên cạnh đó là thực hành tốt, như nó đứng ngay bây giờ, nếu bạn vượt qua một chuỗi "Foo" cho một trong các enums của bạn, bạn sẽ có được những gì dường như là giá trị hợp lệ từ ConvertStringToEnum. – Marc