protected virtual void EndInvokeEvent(object source, IMethodCallMessage message, IMethodReturnMessage returnMessage) { if (ITable.ContainsKey((System.Reflection.MethodInfo)returnMessage.MethodBase)) { if (returnMessage.Exception != null) { returnMessage.GetType().GetField("_e", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).SetValue(returnMessage, null); } returnMessage.GetType().GetField("_ret", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).SetValue(returnMessage, ITable[(System.Reflection.MethodInfo)returnMessage.MethodBase].DynamicInvoke(message.Args)); } if (OTable.ContainsKey((System.Reflection.MethodInfo)message.MethodBase)) { ((Action <T, MethodInfo, object>)OTable[(System.Reflection.MethodInfo)message.MethodBase][1])((T)this.context.Target, (System.Reflection.MethodInfo)message.MethodBase, returnMessage.ReturnValue); //OTable[(System.Reflection.MethodInfo)message.MethodBase][1].DynamicInvoke(this.context.Target, (System.Reflection.MethodInfo)message.MethodBase, message); } }
protected virtual void InvokeErrorEvent(object source, IMethodCallMessage message, IMethodReturnMessage returnMessage, System.Exception e) { if (Trace != null) { Trace((T)this.context.Target, message, e); } if (returnMessage != null) { returnMessage.GetType().GetField("_e", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).SetValue(returnMessage, e); } }