/// <summary> /// 要素推測・生成 /// </summary> /// <param name="pObject">推測元オブジェクト</param> /// <returns>object</returns> /// <seealso cref="Calculators.OperatorKeyWord"/> /// <remarks> /// pObjectから推測した要素を作成しこれを返します。 /// 推測可能なオブジェクト(文字列)は OperatorKeyWord を参照のこと。 /// OperatorKeyWord に無く、かつIConvertibleを継承するオブジェクトは数値と見なされます。 /// (ex) /// Make("("); /// </remarks> static public object Make(object pObject) { object obj = CalculatorItemBase.Make(InstanceTable, pObject); if (obj != null) { return(obj); } if (pObject is IConvertible) { return(new CalculatorValue(((IConvertible)pObject).ToDouble(CultureInfo.CurrentCulture.NumberFormat))); } return(null); }
/// <summary> /// 要素登録(自動解釈型) /// </summary> /// <param name="pObject">要素</param> /// <remarks> /// 様々な型の要素を判別し、登録します。 /// 詳しくはCalculatorItemBase.Make()メソッドを参照。 /// (ex) /// Entry(1); /// Entry("+"); /// Entry(2); /// </remarks> /// <seealso cref="CalculatorItemBase.Make"/> public void Entry(object pObject) { object obj; string str = pObject.ToString(); if ((str.Length > 0) && (str[0] == '@')) { obj = this.GetItemEventHandler(str); } else { obj = CalculatorItemBase.Make(pObject); } if (obj == null) { throw new ArgumentNullException(); } this.Entry((CalculatorItemBase)obj); }