GetComArgument() 정적인 개인적인 메소드

Converts a single argument 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 GetComArgument ( DynamicMetaObject arg ) : DynamicMetaObject
arg System.Dynamic.DynamicMetaObject
리턴 System.Dynamic.DynamicMetaObject
        public override DynamicMetaObject FallbackSetMember(DynamicMetaObject self, DynamicMetaObject value, DynamicMetaObject errorSuggestion)
        {
            if (self.NeedsDeferral())
            {
                return(Defer(self, value));
            }
#if FEATURE_COM
            DynamicMetaObject com;
            if (Microsoft.Scripting.ComInterop.ComBinder.TryBindSetMember(this, self, BindingHelpers.GetComArgument(value), out com))
            {
                return(com);
            }
#endif
            return(Context.Binder.SetMember(Name, self, value, errorSuggestion, new PythonOverloadResolverFactory(_context.Binder, AstUtils.Constant(Context.SharedContext))));
        }
예제 #2
0
        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));
        }