/// <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); }
/// <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; }
/// <summary> /// 変数をセットします。 /// </summary> /// <param name="name">名前</param> /// <param name="obj">オブジェクト</param> public void SetVariable(string name, bool obj) { Variables[name] = new Kbtter3QueryValue(obj); }