//[DebuggerStepThrough] ////[DebuggerHidden] public object Invoke(MixinsInstance mixins, object proxy, MethodInfo method, object[] args, ModuleInstance moduleInstance) { CompositeMethodModel compositeMethod; if (this.methods.TryGetValue(method.ToDefinition(), out compositeMethod)) { return compositeMethod.Invoke(method, proxy, args, mixins, moduleInstance); } return mixins.InvokeObject(proxy, args, method); }
//[DebuggerStepThrough] ////[DebuggerHidden] private CompositeMethodInstance NewCompositeMethodInstance(MethodInfo genericMethod, ModuleInstance moduleInstance) { FragmentInvocationHandler mixinInvocationHandler = this.mixins.NewInvocationHandler(genericMethod); InvocationHandler invoker = mixinInvocationHandler; if (this.methodConcerns.HasConcerns) { MethodConcernsInstance concernsInstance = this.methodConcerns.NewInstance(moduleInstance, mixinInvocationHandler); invoker = concernsInstance; } if (this.methodSideEffects.HasSideEffects) { MethodSideEffectsInstance sideEffectsInstance = this.methodSideEffects.NewInstance(moduleInstance, invoker); invoker = sideEffectsInstance; } return new CompositeMethodInstance(invoker, mixinInvocationHandler, genericMethod, this.mixins.MethodIndex[genericMethod.ToDefinition()]); }
//[DebuggerStepThrough] ////[DebuggerHidden] public MixinModel MixinFor(MethodInfo method) { int integer = this.MethodIndex[method.ToDefinition()]; return this.mixinModels[integer]; }