public override IMessage Invoke(IMessage myMessage) { Console.WriteLine("MyProxy 'Invoke method' Called..."); if (myMessage is IMethodCallMessage) { Console.WriteLine("IMethodCallMessage"); } if (myMessage is IMethodReturnMessage) { Console.WriteLine("IMethodReturnMessage"); } if (myMessage is IConstructionCallMessage) { // Initialize a new instance of remote object IConstructionReturnMessage myIConstructionReturnMessage = this.InitializeServerObject((IConstructionCallMessage)myMessage); ConstructionResponse constructionResponse = new ConstructionResponse(null, (IMethodCallMessage)myMessage); return(constructionResponse); } IDictionary myIDictionary = myMessage.Properties; IMessage returnMessage; myIDictionary["__Uri"] = myUri; // Synchronously dispatch messages to server. returnMessage = ChannelServices.SyncDispatchMessage(myMessage); // Pushing return value and OUT parameters back onto stack. IMethodReturnMessage myMethodReturnMessage = (IMethodReturnMessage)returnMessage; return(returnMessage); }
public override IMessage Invoke(IMessage message) { if (message is IConstructionCallMessage) { IConstructionReturnMessage myIConstructionReturnMessage = this.InitializeServerObject((IConstructionCallMessage)message); ConstructionResponse constructionResponse = new ConstructionResponse(null, (IMethodCallMessage)message); return(constructionResponse); } IMethodCallMessage methodMessage = new MethodCallMessageWrapper((IMethodCallMessage)message); MethodBase method = methodMessage.MethodBase; object returnValue = null; if (method.DeclaringType == typeof(IDynamicProxy)) { returnValue = method.Invoke(this, methodMessage.Args); } else { returnValue = InvocationHandler(ProxyTargetTyped, method, methodMessage.Args); } ReturnMessage returnMessage = new ReturnMessage(returnValue, methodMessage.Args, methodMessage.ArgCount, methodMessage.LogicalCallContext, methodMessage); return(returnMessage); }
public override IMessage Invoke(IMessage msg) { if (msg is IConstructionCallMessage) { // Initialize a new instance of remote object IConstructionReturnMessage myIConstructionReturnMessage = this.InitializeServerObject((IConstructionCallMessage)msg); ConstructionResponse constructionResponse = new ConstructionResponse(null, (IMethodCallMessage)msg); return(constructionResponse); } IDictionary myIDictionary = msg.Properties; IMessage retMsg; myIDictionary["__Uri"] = m_URI; // Synchronously dispatch messages to server. retMsg = ChannelServices.SyncDispatchMessage(msg); // Pushing return value and OUT parameters back onto stack IMethodReturnMessage mrm = (IMethodReturnMessage)retMsg; return(retMsg); }