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);
        }
Example #2
0
        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);
        }