/// <summary> /// Provides dynamic resolution of method calls. /// To specify Async and/or OperationTypeInfo, please pass these as arguments. /// They can be included in any order. /// </summary> /// <param name="binder">Binder.</param> /// <param name="args">Arguments.</param> /// <param name="result">Return value.</param> /// <returns>Success or failure.</returns> #else /// <summary> /// メソッド実行の自動解決です。 /// AsyncとOperationTypeInfoを指定する場合は、引数に渡してください。 /// その順番はどこでも構いません。 /// </summary> /// <param name="binder">バインダー。</param> /// <param name="args">引数。</param> /// <param name="result">戻り値。</param> /// <returns>成否。</returns> #endif public override bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result) { Async async; OperationTypeInfo typeInfo; args = DynamicFriendlyOperationUtility.ResolveArguments(args, out async, out typeInfo); result = DynamicFriendlyOperationUtility.GetFriendlyOperation(_appVar, binder.Name, async, typeInfo)(args).Dynamic(); return(true); }
/// <summary> /// メソッド実行の動的解決です。 /// AsyncとOperationTypeInfoを指定する場合は、引数に渡してください。 /// その順番はどこでも構いません。 /// </summary> /// <param name="name">名前。</param> /// <param name="args">引数。</param> /// <returns>戻り値。</returns> private dynamic InvokeMember(string name, object[] args) { string nextTypeName = JointName(_name, name); if (IsTypeName(_app, nextTypeName, _isType)) { //型名称になれば、生成する。 return(NewAppVar(_app, nextTypeName, args)); } else { //staticメソッドの呼び出し。 Async async; OperationTypeInfo typeInfo; args = DynamicFriendlyOperationUtility.ResolveArguments(args, out async, out typeInfo); return(DynamicFriendlyOperationUtility.GetFriendlyOperation(_app, nextTypeName, async, typeInfo)(args).Dynamic()); } }