public static ClassFormatter FromClass <T>() where T : class { ClassFormatter map = new ClassFormatter(); List <PropertyInfo> properties = typeof(T).GetProperties().ToList(); foreach (PropertyInfo property in properties) { FormattingPropertyAttribute mapProperty = property.GetCustomAttribute <FormattingPropertyAttribute>(); if (mapProperty != null) { // property.Name.ToLower() => OriFormat.Jsonify(property.Name) map.AddKey(property.Name, mapProperty.Name ?? property.Name.ToLower()); } } return(map); }
public static string Format <T>(string frame, T obj) where T : class { ClassFormatter map = FromClass <T>(); // get all properties in a class. List <PropertyInfo> properties = typeof(T).GetProperties().ToList(); // check through all properties in the class specified. foreach (PropertyInfo property in properties) { // future task: find a way to replace only the singular replacement key, as opposed to replacing other // reference inserted when replacing. // use stringbuilder to separate the class into pieces? if (!string.IsNullOrWhiteSpace(map[property.Name]) && property.GetValue(obj) != null) { // ignore array properties, as they must be manually handled. //if (property.GetValue(obj).GetType().IsArray) //continue; frame = frame.Replace(map[property.Name], property.GetValue(obj).ToString()); } } // return the final string in which specified values have been replaced. return(frame); }