public static T MapToType <T>(this AttributeData attributeData) where T : Attribute { T attribute; if (attributeData.AttributeConstructor != null && attributeData.ConstructorArguments.Length > 0) { attribute = (T)Activator.CreateInstance(typeof(T), attributeData.GetActualConstuctorParams().ToArray()); } else { attribute = (T)Activator.CreateInstance(typeof(T)); } foreach (var p in attributeData.NamedArguments) { typeof(T).GetField(p.Key).SetValue(attribute, p.Value.Value); } return(attribute); }