/// <summary> /// Dynamically resolves get access to properties and fields. /// Cannot be used asynchorously. /// If you need asynchronous access, please cast the object to an AppVar /// and use a FriendlyOperation, or call it in the form of a method by specifying a /// method name equal to the property name. /// </summary> /// <param name="binder">Binder.</param> /// <param name="result">Retrieved result.</param> /// <returns>Success or failure.</returns> #else /// <summary> /// プロパティーへのアクセス(getter)の動的解決です。 /// 非同期実行はできません。 /// どうしても非同期実行が必要な場合はAppVarにキャストして、FriendlyOperationを使用するか、 /// メソッド形式の呼び出しを実行してください。 /// メソッド名称はプロパティー名称と同一です。 /// </summary> /// <param name="binder">バインダー。</param> /// <param name="result">取得結果。</param> /// <returns>成否。</returns> #endif public override bool TryGetMember(GetMemberBinder binder, out object result) { string nextName = JointName(_name, binder.Name); if (!_isType || //現在の名前が型でないのなら、つなげる IsTypeName(_app, nextName, _isType)) //現在の名前が型でも、つなげた名前が型になるなら、つなげる。 { dynamic next = new DynamicAppType(_app, nextName); result = next; } else { //staticなgetter呼び出し。 result = _app[nextName]().Dynamic(); } return(true); }
public override bool TryGetMember(GetMemberBinder binder, out object result) { string nextName = JointName(_name, binder.Name); if (!_isType || //現在の名前が型でないのなら、つなげる IsTypeName(_app, nextName, _isType)) //現在の名前が型でも、つなげた名前が型になるなら、つなげる。 { dynamic next = new DynamicAppType(_app, nextName); result = next; } else { //staticなgetter呼び出し。 result = _app[nextName]().Dynamic(); } return true; }