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)); }
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)); }
public object DynamicInvoke(params object[] args) { return(Jsni.apply(this.As <JsObject>(), this.As <JsObject>(), args.As <JsArray>())); }