using System.Collections;
using System.Collections.Generic;
public static void Main()
Console.WriteLine("Draft".ToEnum<ReportStatus>());
Console.WriteLine("Revising".ToEnum<ReportStatus>());
Console.WriteLine("Finished".ToEnum<ReportStatus>());
Console.WriteLine("draft".ToEnum<ReportStatus>());
Console.WriteLine("revising".ToEnum<ReportStatus>());
Console.WriteLine("finished".ToEnum<ReportStatus>());
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())