public static T GetEnumFromAttrKey <T>(this PropertyKey key) where T : struct // enum { T en = Enum.GetValues(typeof(T)).Cast <T>().Where(e => { KeyAttribute attr = e.GetType().GetField(e.ToString()).GetCustomAttribute <KeyAttribute>(); return(attr.Guid == key.fmtid && attr.Id == key.pid); }).FirstOrDefault(); if (en.Equals(default(T))) { Trace.TraceWarning($"Unknown {typeof(T).Name} Key {key.fmtid} {key.pid}"); } return(en); }
public static T GetEnumFromAttrKey <T>(this PropertyKey key) where T : struct // enum { T en = Enum.GetValues(typeof(T)).Cast <T>().Where(e => { // changed for .net framework 4.0 // KeyAttribute attr = e.GetType().GetField(e.ToString()).GetCustomAttribute<KeyAttribute>(); KeyAttribute attr = Attribute.GetCustomAttribute(e.GetType().GetField(e.ToString()), typeof(KeyAttribute)) as KeyAttribute; return(attr.PropertyKey == key); }).FirstOrDefault(); if (en.Equals(default(T))) { Trace.TraceWarning($"Unknown {typeof(T).Name} Key {key.fmtid} {key.pid}"); } return(en); }