/// <summary>
 /// Used for describing commands
 /// </summary>
 /// <param name="type"></param>
 /// <param name="DataType"></param>
 public NamedParam(Type type, Type DataType)
     : this()
 {
     _Type  = type;
     _value = NullType.GetNullType(DataType);
     _key   = _Type.Name;
 }
        public static List <NamedParam> GetMemberValues(string prefix, Object properties, Action <MemberInfo, object> GetUUIDType)
        {
            List <NamedParam> dict = new List <NamedParam>();

            if (properties == null)
            {
                return(dict);
            }
            Type t = properties.GetType();
            KeyValuePair <List <PropertyInfo>, List <FieldInfo> > vvv = GetPropsForTypes(t);
            HashSet <string> lowerProps = new HashSet <string>();
            BindingFlags     flags      = BindingFlags.Instance | BindingFlags.Public; //BindingFlags.NonPublic

            foreach (
                PropertyInfo o in vvv.Key)
            {
                {
                    try
                    {
                        var v = o.GetValue(properties, null);
                        if (v == null)
                        {
                            v = new NullType(properties, o);
                        }
                        if (GetUUIDType != null)
                        {
                            GetUUIDType(o, v);
                        }
                        dict.Add(new NamedParam(properties, o, prefix + o.Name, o.PropertyType, v));
                    }
                    catch (Exception e)
                    {
                        DLRConsole.DebugWriteLine("" + e);
                    }
                }
            }
            foreach (FieldInfo o in vvv.Value)
            {
                try
                {
                    var v = o.GetValue(properties);
                    if (v == null)
                    {
                        v = new NullType(properties, o);
                    }
                    if (GetUUIDType != null)
                    {
                        GetUUIDType(o, v);
                    }
                    dict.Add(new NamedParam(properties, o, prefix + o.Name, o.FieldType, v));
                }
                catch (Exception e)
                {
                    DLRConsole.DebugWriteLine("" + e);
                }
            }
            return(dict);
        }