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); }