internal static void IDOIndexSet(IDynamicMetaObjectProvider Instance, object[] Arguments, string[] ArgumentNames) { SaveCopyBack back = new SaveCopyBack(null); using (back) { object[] packedArgs = null; CallInfo callInfo = null; IDOUtils.PackArguments(1, ArgumentNames, Arguments, ref packedArgs, ref callInfo); IDOUtils.CreateFuncCallSiteAndInvoke(new VBIndexSetBinder(callInfo), Instance, packedArgs); } }
internal static object IDOGet(IDynamicMetaObjectProvider Instance, string MemberName, object[] Arguments, string[] ArgumentNames, bool[] CopyBack) { object obj2; SaveCopyBack back = new SaveCopyBack(CopyBack); using (back) { object[] packedArgs = null; CallInfo callInfo = null; IDOUtils.PackArguments(0, ArgumentNames, Arguments, ref packedArgs, ref callInfo); try { return IDOUtils.CreateRefCallSiteAndInvoke(new VBGetBinder(MemberName, callInfo), Instance, packedArgs); } finally { IDOUtils.CopyBackArguments(callInfo, packedArgs, Arguments); } } return obj2; }
internal static object IDOGet(IDynamicMetaObjectProvider Instance, string MemberName, object[] Arguments, string[] ArgumentNames, bool[] CopyBack) { object obj2; SaveCopyBack back = new SaveCopyBack(CopyBack); using (back) { object[] packedArgs = null; CallInfo callInfo = null; IDOUtils.PackArguments(0, ArgumentNames, Arguments, ref packedArgs, ref callInfo); try { return(IDOUtils.CreateRefCallSiteAndInvoke(new VBGetBinder(MemberName, callInfo), Instance, packedArgs)); } finally { IDOUtils.CopyBackArguments(callInfo, packedArgs, Arguments); } } return(obj2); }
internal static void IDOSetComplex(IDynamicMetaObjectProvider Instance, string MemberName, object[] Arguments, string[] ArgumentNames, bool OptimisticSet, bool RValueBase) { SaveCopyBack back = new SaveCopyBack(null); using (back) { if (Arguments.Length == 1) { IDOUtils.CreateFuncCallSiteAndInvoke(new VBSetComplexBinder(MemberName, OptimisticSet, RValueBase), Instance, Arguments); } else { object instance = IDOUtils.CreateFuncCallSiteAndInvoke(new VBGetMemberBinder(MemberName), Instance, Symbols.NoArguments); if (instance == missingMemberSentinel) { NewLateBinding.ObjectLateSetComplex(Instance, null, MemberName, Arguments, ArgumentNames, Symbols.NoTypeArguments, OptimisticSet, RValueBase); } else { NewLateBinding.LateIndexSetComplex(instance, Arguments, ArgumentNames, OptimisticSet, RValueBase); } } } }
internal static void IDOIndexSetComplex(IDynamicMetaObjectProvider Instance, object[] Arguments, string[] ArgumentNames, bool OptimisticSet, bool RValueBase) { SaveCopyBack back = new SaveCopyBack(null); using (back) { object[] packedArgs = null; CallInfo callInfo = null; IDOUtils.PackArguments(1, ArgumentNames, Arguments, ref packedArgs, ref callInfo); IDOUtils.CreateFuncCallSiteAndInvoke(new VBIndexSetComplexBinder(callInfo, OptimisticSet, RValueBase), Instance, packedArgs); } }
internal static void IDOSetComplex(IDynamicMetaObjectProvider Instance, string MemberName, object[] Arguments, string[] ArgumentNames, bool OptimisticSet, bool RValueBase) { SaveCopyBack back = new SaveCopyBack(null); using (back) { if (Arguments.Length == 1) { IDOUtils.CreateFuncCallSiteAndInvoke(new VBSetComplexBinder(MemberName, OptimisticSet, RValueBase), Instance, Arguments); } else { object instance = IDOUtils.CreateFuncCallSiteAndInvoke(new VBGetMemberBinder(MemberName), Instance, Symbols.NoArguments); if (instance == missingMemberSentinel) { NewLateBinding.ObjectLateSetComplex(Instance, null, MemberName, Arguments, ArgumentNames, Symbols.NoTypeArguments, OptimisticSet, RValueBase); } else { NewLateBinding.LateIndexSetComplex(instance, Arguments, ArgumentNames, OptimisticSet, RValueBase); } } } }
internal static bool[] GetCopyBack() { return(SaveCopyBack.GetCopyBack()); }