public static string UnitsHeader() { StringBuilder s = new StringBuilder(); int n = 0; _propNames.ForEach((ss) => { if (0 < n++) { s.Append("\t"); } s.Append(Units.GetName(ss)); }); return(s.ToString()); }
public void ReadValues(string values) { Type qType = typeof(Qualities); string[] vals = values.Split('\t'); int nVal = 0; foreach (string n in _propNames) { string sVal = vals[nVal++]; if (String.IsNullOrEmpty(sVal)) { continue; } PropertyInfo pi = qType.GetProperty(n); MethodInfo[] mis = pi.PropertyType.GetMethods(); MethodInfo mi = null; foreach (MethodInfo tmi in mis) { if (tmi.Name == "Parse" && tmi.IsStatic) { mi = tmi; break; } } if (mi != null) { List <object> args = new List <object>(2); args.Add(sVal); if (mi.GetParameters().Length == 2) { args.Add(Units.GetName(n)); } pi.SetValue(this, mi.Invoke(null, args.ToArray())); continue; } if (pi.PropertyType.IsEnum) { pi.SetValue(this, Enum.Parse(pi.PropertyType, sVal)); continue; } switch (pi.PropertyType.Name) { case "Int32[]": pi.SetValue(this, ParseInt32(sVal)); break; case "Int32": pi.SetValue(this, int.Parse(sVal)); break; case "Double": pi.SetValue(this, double.Parse(sVal)); break; case "String": pi.SetValue(this, sVal); break; } } }