Ejemplo n.º 1
0
        /// <summary>
        /// 現在の値がUndefinedに対して有効な時、
        /// 対象のオブジェクトのフィールド・プロパティを検索し、
        /// 見つかればその値を代入したオブジェクトを取得します。
        /// </summary>
        /// <param name="name">検索する名前</param>
        /// <returns>見つかれば値</returns>
        public Kbtter3QueryValue Dive(string name)
        {
            var ret  = new Kbtter3QueryValue();
            var type = Value.GetType() as Type;
            var pr   = type.GetProperty(name);
            var fl   = type.GetField(name);

            if (pr == null && fl == null)
            {
                return(null);
            }

            if (pr != null)
            {
                var val = pr.GetValue(Value as object);
                var vt  = val.GetType();
                if (vt.Name == "Int32")
                {
                    ret.SetValue((int)val);
                }
                else if (vt.Name == "Boolean")
                {
                    ret.SetValue((bool)val);
                }
                else if (vt.Name == "String")
                {
                    ret.SetValue(val as string);
                }
                else if (vt.Name == "Regex")
                {
                    ret.SetValue(val as Regex);
                }
                else
                {
                    ret.SetValue(val);
                }
            }
            else
            {
                var val = pr.GetValue(Value as object);
                var vt  = val.GetType();
                if (vt.Name == "Int32")
                {
                    ret.SetValue((int)val);
                }
                else if (vt.Name == "Boolean")
                {
                    ret.SetValue((bool)val);
                }
                else if (vt.Name == "String")
                {
                    ret.SetValue(val as string);
                }
                else if (vt.Name == "Regex")
                {
                    ret.SetValue(val as Regex);
                }
                else
                {
                    ret.SetValue(val);
                }
            }
            return(ret);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 現在の値がUndefinedに対して有効な時、
        /// 対象のオブジェクトのフィールド・プロパティを検索し、
        /// 見つかればその値を代入したオブジェクトを取得します。
        /// </summary>
        /// <param name="name">検索する名前</param>
        /// <returns>見つかれば値</returns>
        public Kbtter3QueryValue Dive(string name)
        {
            var ret = new Kbtter3QueryValue();
            var type = Value.GetType() as Type;
            var pr = type.GetProperty(name);
            var fl = type.GetField(name);
            if (pr == null && fl == null) return null;

            if (pr != null)
            {
                var val = pr.GetValue(Value as object);
                var vt = val.GetType();
                if (vt.Name == "Int32")
                {
                    ret.SetValue((int)val);
                }
                else if (vt.Name == "Boolean")
                {
                    ret.SetValue((bool)val);
                }
                else if (vt.Name == "String")
                {
                    ret.SetValue(val as string);
                }
                else if (vt.Name == "Regex")
                {
                    ret.SetValue(val as Regex);
                }
                else
                {
                    ret.SetValue(val);
                }
            }
            else
            {
                var val = pr.GetValue(Value as object);
                var vt = val.GetType();
                if (vt.Name == "Int32")
                {
                    ret.SetValue((int)val);
                }
                else if (vt.Name == "Boolean")
                {
                    ret.SetValue((bool)val);
                }
                else if (vt.Name == "String")
                {
                    ret.SetValue(val as string);
                }
                else if (vt.Name == "Regex")
                {
                    ret.SetValue(val as Regex);
                }
                else
                {
                    ret.SetValue(val);
                }
            }
            return ret;
        }
Ejemplo n.º 3
0
 /// <summary>
 /// 変数をセットします。
 /// </summary>
 /// <param name="name">名前</param>
 /// <param name="obj">オブジェクト</param>
 public void SetVariable(string name, bool obj)
 {
     Variables[name] = new Kbtter3QueryValue(obj);
 }