Exemplo n.º 1
0
        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());
        }
Exemplo n.º 2
0
        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;
                }
            }
        }