Пример #1
0
        public override object Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, CultureInfo culture)
        {
            if (IsStatic && obj != null)
            {
                throw new InvalidOperationException("Static methods cannot have a target");
            }
            if (!IsStatic && obj == null)
            {
                throw new InvalidOperationException("Instance methods must have a target");
            }

            var args = new JsArray();

            if (typeArguments != null)
            {
                foreach (var typeArgument in typeArguments)
                {
                    args.push(typeArgument.thisType);
                }
            }
            if (parameters != null)
            {
                foreach (var argument in parameters)
                {
                    args.push(argument.As <JsObject>());
                }
            }
            return(Jsni.apply(jsMethod, obj.As <JsObject>(), args));
        }
Пример #2
0
        public override object Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, CultureInfo culture)
        {
            if (IsStatic && obj != null)
            {
                throw new InvalidOperationException("Static methods cannot have a target");
            }
            if (!IsStatic && obj == null)
            {
                throw new InvalidOperationException("Instance methods must have a target");
            }

            var args = new JsArray();

            if (typeArguments != null)
            {
                foreach (var typeArgument in typeArguments)
                {
                    args.push(typeArgument.thisType);
                }
            }
            if (parameters != null)
            {
                var parametersArray = parameters.As <JsArray>();
                for (var i = 0; i < parametersArray.length; i++)
                {
                    var argument = parametersArray[i].As <JsObject>();
                    args.push(argument.As <JsObject>());
                }
            }
            var target = IsStatic ? DeclaringType.thisType : obj;

            return(Jsni.apply(jsMethod, target.As <JsObject>(), args));
        }
Пример #3
0
 public object DynamicInvoke(params object[] args)
 {
     return(Jsni.apply(this.As <JsObject>(), this.As <JsObject>(), args.As <JsArray>()));
 }