internal static string GetDescription(Enum en) { Type type = en.GetType(); MemberInfo[] memInfo = type.GetMember(en.ToString()); if (memInfo != null && memInfo.Length > 0) { object[] attrs = memInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false); if (attrs != null && attrs.Length > 0) { return(((System.ComponentModel.DescriptionAttribute)attrs[0]).Description); } } UnmarshaledString ptr = (UnmarshaledString)InternalCAPI.GetLastErrorString(); string strLastError = Marshal.PtrToStringAuto(ptr); Marshal.FreeCoTaskMem(ptr); return(en.ToString() + " - \r\n" + strLastError); }