GetComArguments() static private méthode

Converts arguments into a form which can be used for COM interop. The argument is only converted if we have an IronPython specific conversion when calling COM methods.
static private GetComArguments ( DynamicMetaObject args ) : System.Dynamic.DynamicMetaObject[]
args System.Dynamic.DynamicMetaObject
Résultat System.Dynamic.DynamicMetaObject[]
Exemple #1
0
        public override DynamicMetaObject /*!*/ FallbackInvoke(DynamicMetaObject target, DynamicMetaObject /*!*/[] /*!*/ args, DynamicMetaObject errorSuggestion)
        {
            if (target.Value is IDynamicMetaObjectProvider && errorSuggestion == null)
            {
                // try creating an instance...
                return(target.BindCreateInstance(
                           _context.Create(this, CallInfo),
                           args
                           ));
            }

#if FEATURE_COM
            DynamicMetaObject com;
            if (Microsoft.Scripting.ComInterop.ComBinder.TryBindInvoke(this, target, BindingHelpers.GetComArguments(args), out com))
            {
                return(com);
            }
#endif

            return(InvokeFallback(target, args, BindingHelpers.CallInfoToSignature(CallInfo), errorSuggestion));
        }
Exemple #2
0
        public override DynamicMetaObject FallbackGetIndex(DynamicMetaObject target, DynamicMetaObject[] indexes, DynamicMetaObject errorSuggestion)
        {
#if !SILVERLIGHT
            DynamicMetaObject com;
            if (Microsoft.Scripting.ComInterop.ComBinder.TryBindGetIndex(this, target, BindingHelpers.GetComArguments(indexes), out com))
            {
                return(com);
            }
#endif
            return(PythonProtocol.Index(this, PythonIndexType.GetItem, ArrayUtils.Insert(target, indexes), errorSuggestion));
        }
        public override DynamicMetaObject FallbackSetIndex(DynamicMetaObject target, DynamicMetaObject[] indexes, DynamicMetaObject value, DynamicMetaObject errorSuggestion)
        {
#if FEATURE_COM
            DynamicMetaObject com;
            if (Microsoft.Scripting.ComInterop.ComBinder.TryBindSetIndex(this, target, BindingHelpers.GetComArguments(indexes), BindingHelpers.GetComArgument(value), out com))
            {
                return(com);
            }
#endif

            DynamicMetaObject[] finalArgs = new DynamicMetaObject[indexes.Length + 2];
            finalArgs[0] = target;
            for (int i = 0; i < indexes.Length; i++)
            {
                finalArgs[i + 1] = indexes[i];
            }
            finalArgs[finalArgs.Length - 1] = value;

            return(PythonProtocol.Index(this, PythonIndexType.SetItem, finalArgs, errorSuggestion));
        }