.assembly GenericEnumExtensions { .custom instance void [mscorlib]System.Runtime.Versioning.TargetFrameworkAttribute::.ctor(string) = ( 01 00 29 2E 4E 45 54 46 72 61 6D 65 77 6F 72 6B // ..).NETFramework 2C 56 65 72 73 69 6F 6E 3D 76 34 2E 30 2C 50 72 // ,Version=v4.0,Pr 6F 66 69 6C 65 3D 43 6C 69 65 6E 74 01 00 54 0E // ofile=Client..T. 14 46 72 61 6D 65 77 6F 72 6B 44 69 73 70 6C 61 // .FrameworkDispla 79 4E 61 6D 65 1F 2E 4E 45 54 20 46 72 61 6D 65 // yName..NET Frame 77 6F 72 6B 20 34 20 43 6C 69 65 6E 74 20 50 72 // work 4 Client Pr 6F 66 69 6C 65 ) // ofile .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 ) //.custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78 // ....T..WrapNonEx // 63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 ) // ceptionThrows. .custom instance void [System.Core]System.Runtime.CompilerServices.ExtensionAttribute::.ctor() = ( 01 00 00 00 ) //.hash algorithm 0x00008004 //.ver 0:0:0:0 } .class public abstract auto ansi sealed beforefieldinit GenericEnumExtensions.GenericEnumExt extends [mscorlib]System.Object { .custom instance void [System.Core]System.Runtime.CompilerServices.ExtensionAttribute::.ctor() = ( 01 00 00 00 ) .method public hidebysig static bool Has<valuetype .ctor ([mscorlib]System.Enum) T>(!!T target, !!T flag) cil managed { .custom instance void [System.Core]System.Runtime.CompilerServices.ExtensionAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 8 ldarga 0 ldarg.1 box !!T constrained. !!T callvirt instance bool [mscorlib]System.Enum::HasFlag(class [mscorlib]System.Enum) ret } .method public hidebysig static valuetype [mscorlib]System.Nullable`1<!!T> ParseEnum<valuetype .ctor ([mscorlib]System.Enum) T>(string target) cil managed { .custom instance void [System.Core]System.Runtime.CompilerServices.ExtensionAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 8 ldarg.0 ldc.i4.0 call valuetype [mscorlib]System.Nullable`1<!!T> GenericEnumExtensions.GenericEnumExt::ParseEnum<!!T>(string, bool) ret } .method public hidebysig static valuetype [mscorlib]System.Nullable`1<!!T> ParseEnum<valuetype .ctor ([mscorlib]System.Enum) T>(string target, bool ignoreCase) cil managed { .custom instance void [System.Core]System.Runtime.CompilerServices.ExtensionAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 3 .locals init (valuetype [mscorlib]System.Nullable`1<!!T>, valuetype [mscorlib]System.Nullable`1<!!T>) .try { ldtoken !!T call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle) ldarg.0 ldarg.1 call object [mscorlib]System.Enum::Parse(class [mscorlib]System.Type, string, bool) unbox.any !!T newobj instance void valuetype [mscorlib]System.Nullable`1<!!T>::.ctor(!0) stloc.0 leave.s L_Return } catch [mscorlib]System.Object { pop ldloca 1 initobj valuetype [mscorlib]System.Nullable`1<!!T> ldloc.1 stloc.0 leave.s L_Return } L_Return: ldloc.0 ret } //========//========//========//======== //========//========//========//======== .method public hidebysig static string FormatEnum<valuetype .ctor ([mscorlib]System.Enum) T>(object target, string format) cil managed { .custom instance void [System.Core]System.Runtime.CompilerServices.ExtensionAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 8 ldtoken !!T call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle) ldarg.0 ldarg.1 call string [mscorlib]System.Enum::Format(class [mscorlib]System.Type, object, string) ret } .method public hidebysig static string Format<valuetype .ctor ([mscorlib]System.Enum) T>(!!T target, string format) cil managed { .custom instance void [System.Core]System.Runtime.CompilerServices.ExtensionAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 8 ldtoken !!T call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle) ldarg.0 box !!T ldarg.1 call string [mscorlib]System.Enum::Format(class [mscorlib]System.Type, object, string) ret } .method public hidebysig static string GetEnumName<valuetype .ctor ([mscorlib]System.Enum) T>(object target) cil managed { .custom instance void [System.Core]System.Runtime.CompilerServices.ExtensionAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 8 ldtoken !!T call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle) ldarg.0 call string [mscorlib]System.Enum::GetName(class [mscorlib]System.Type, object) ret } .method public hidebysig static string[] GetNames<valuetype .ctor ([mscorlib]System.Enum) T>() cil managed { .maxstack 8 ldtoken !!T call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle) call string[] [mscorlib]System.Enum::GetNames(class [mscorlib]System.Type) ret } .method public hidebysig static class [mscorlib]System.Type GetUnderlyingType<valuetype .ctor ([mscorlib]System.Enum) T>() cil managed { .maxstack 8 ldtoken !!T call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle) call class [mscorlib]System.Type [mscorlib]System.Enum::GetUnderlyingType(class [mscorlib]System.Type) ret } .method public hidebysig static !!T[] GetValues<valuetype .ctor ([mscorlib]System.Enum) T>() cil managed { .maxstack 8 ldtoken !!T call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle) call class [mscorlib]System.Array [mscorlib]System.Enum::GetValues(class [mscorlib]System.Type) castclass !!T[] ret } .method public hidebysig static bool IsDefinedEnum<valuetype .ctor ([mscorlib]System.Enum) T>(object target) cil managed { .custom instance void [System.Core]System.Runtime.CompilerServices.ExtensionAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 8 ldtoken !!T call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle) ldarg.0 call bool [mscorlib]System.Enum::IsDefined(class [mscorlib]System.Type, object) ret } }
// 程序集 GenericEnumExtensions.dll, v4.0.30319
using System;
using System.Runtime.CompilerServices;
namespace GenericEnumExtensions
{
public static class GenericEnumExt
{
public static string Format<T>(this T target, string format) where T : struct, Enum;
public static string FormatEnum<T>(this object target, string format) where T : struct, Enum;
public static string GetEnumName<T>(this object target) where T : struct, Enum;
public static string[] GetNames<T>() where T : struct, Enum;
public static Type GetUnderlyingType<T>() where T : struct, Enum;
public static T[] GetValues<T>() where T : struct, Enum;
public static bool Has<T>(this T target, T flag) where T : struct, Enum;
public static bool IsDefinedEnum<T>(this object target) where T : struct, Enum;
public static T? ParseEnum<T>(this string target) where T : struct, Enum;
public static T? ParseEnum<T>(this string target, bool ignoreCase) where T : struct, Enum;
}
}