protected override object InnerInvokeMember(string name, BindingFlags invokeAttr, Binder binder, object target, object[] args, ParameterModifier[] modifiers, CultureInfo culture, string[] namedParameters) { object result; object processedTarget = TypeMappingHelpers.MapToHostType(target); object[] processedArgs = TypeMappingHelpers.MapToHostType(args); if (name == SpecialMemberName.Default && processedTarget is Delegate) { var del = (Delegate)processedTarget; result = InvokeDelegate(del, processedArgs); } else { result = InvokeStandardMember(name, invokeAttr, binder, processedTarget, processedArgs, modifiers, culture, namedParameters); } return(TypeMappingHelpers.MapToScriptType(result, _engineMode)); }
protected override object InnerInvokeMember(string name, BindingFlags invokeAttr, Binder binder, object target, object[] args, ParameterModifier[] modifiers, CultureInfo culture, string[] namedParameters) { object[] processedArgs = TypeMappingHelpers.MapToHostType(args); object result; if (name == SpecialMemberName.Default && invokeAttr.HasFlag(BindingFlags.CreateInstance)) { if (_engineMode != JsEngineMode.Classic && processedArgs.Length > 0) { processedArgs = processedArgs.Skip(1).ToArray(); } result = Activator.CreateInstance(_type, processedArgs); } else { result = InvokeStandardMember(name, invokeAttr, binder, target, processedArgs, modifiers, culture, namedParameters); } return(TypeMappingHelpers.MapToScriptType(result, _engineMode)); }
/// <summary> /// Makes a mapping of array items from the script type to a host type /// </summary> /// <param name="args">The source array</param> /// <returns>The mapped array</returns> private object[] MapToHostType(object[] args) { return(TypeMappingHelpers.MapToHostType(args)); }
/// <summary> /// Makes a mapping of value from the script type to a host type /// </summary> /// <param name="value">The source value</param> /// <returns>The mapped value</returns> private object MapToHostType(object value) { return(TypeMappingHelpers.MapToHostType(value)); }
/// <summary> /// Makes a mapping of array items from the host type to a script type /// </summary> /// <param name="args">The source array</param> /// <returns>The mapped array</returns> private object[] MapToScriptType(object[] args) { return(TypeMappingHelpers.MapToScriptType(args, _engineMode)); }
/// <summary> /// Makes a mapping of value from the host type to a script type /// </summary> /// <param name="value">The source value</param> /// <returns>The mapped value</returns> private object MapToScriptType(object value) { return(TypeMappingHelpers.MapToScriptType(value, _engineMode)); }