/// <summary> /// Parses an <see cref="AttributeData"/> into a descriptive class instance. /// </summary> /// <typeparam name="T">The instance to parse into.</typeparam> /// <param name="data">The <see cref="AttributeData"/> to parse.</param> /// <returns>The parsed object.</returns> public static T ParseInto <T>(this AttributeData data) where T : new() { var result = new T(); // Build the descriptor var desc = new AttributeDescriptor(); var props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance); foreach (var prop in props) { desc.WithParameter(prop.Name, prop.GetValue(result)); } // Parse var values = data.Parse(desc); foreach (var prop in props) { prop.SetValue(result, values[prop.Name]); } return(result); }