public override object Invoke(object obj, BindingFlags options, Binder binder, object[] parameters, CultureInfo culture) { MethodInfo method = TypeReferences.ToExecutionContext(this.method); if (binder != null) { try { return(method.Invoke(obj, options, binder, parameters, culture)); } catch (TargetInvocationException exception) { throw exception.InnerException; } } MethodInvoker methodInvoker = this.methodInvoker; if ((methodInvoker == null) && ((this.methodInvoker = MethodInvoker.GetInvokerFor(method)) == null)) { try { return(method.Invoke(obj, options, binder, parameters, culture)); } catch (TargetInvocationException exception2) { throw exception2.InnerException; } } return(methodInvoker.Invoke(obj, parameters)); }
public override Object Invoke(Object obj, BindingFlags options, Binder binder, Object[] parameters, CultureInfo culture) { MethodInfo method = TypeReferences.ToExecutionContext(this.method); if (binder != null) { try{ return(method.Invoke(obj, options, binder, parameters, culture)); }catch (TargetInvocationException e) { throw e.InnerException; } } MethodInvoker invoker = this.methodInvoker; if (invoker == null) { this.methodInvoker = invoker = MethodInvoker.GetInvokerFor(method); if (invoker == null) //because the method is not safe to call via a thunk { try{ return(method.Invoke(obj, options, binder, parameters, culture)); }catch (TargetInvocationException e) { throw e.InnerException; } } } return(invoker.Invoke(obj, parameters)); }
public override Object Invoke(Object obj, BindingFlags options, Binder binder, Object[] parameters, CultureInfo culture) { if (binder != null) { try{ return(this.method.Invoke(obj, options, binder, parameters, culture)); }catch (TargetInvocationException e) { throw e.InnerException; } } MethodInvoker invoker = this.methodInvoker; if (invoker == null) { this.methodInvoker = invoker = MethodInvoker.GetInvokerFor(this.method); } return(invoker.Invoke(obj, parameters)); }