CSharp · Console
using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
public class Program
{
public enum ReportStatus
{
Draft,
Revising,
Finished
};
public static void Main()
{
Console.WriteLine();
Console.WriteLine("Draft".ToEnum<ReportStatus>());
Console.WriteLine("Revising".ToEnum<ReportStatus>());
Console.WriteLine("Finished".ToEnum<ReportStatus>());
Console.WriteLine();
Console.WriteLine("draft".ToEnum<ReportStatus>());
Console.WriteLine("revising".ToEnum<ReportStatus>());
Console.WriteLine("finished".ToEnum<ReportStatus>());
Console.WriteLine();
Console.WriteLine("0".ToEnum<ReportStatus>());
Console.WriteLine("1".ToEnum<ReportStatus>());
Console.WriteLine("2".ToEnum<ReportStatus>());
}
}
public static class StringExtensions
{
public static TEnum ToEnum<TEnum>(this string text)
where TEnum : struct, IComparable, IFormattable, IConvertible
{
TEnum result = default(TEnum);
return !string.IsNullOrWhiteSpace(text)
&& Enum.TryParse(text, true, out result)
&& Enum.IsDefined(typeof(TEnum), result.ToString())
? result
: default(TEnum);
}
}