IMethodReturnMessage Interface
Defines the method call return message interface.
For a list of all members of this type, see IMethodReturnMessage Members.
[Visual Basic] Public Interface IMethodReturnMessage Inherits IMethodMessage, IMessage [C#] public interface IMethodReturnMessage : IMethodMessage, IMessage [C++] public __gc __interface IMethodReturnMessage : public IMethodMessage, IMessage [JScript] public interface IMethodReturnMessage implements IMethodMessage, IMessage
Classes that Implement IMethodReturnMessage
| Class | Description |
|---|---|
| ReturnMessage | Holds a message returned in response to a method call on a remote object. |
Remarks
A method call return message represents the response to a method call on an object at the end of the message sink. An IMethodReturnMessage is generated as a result of a method called on a remote object, and is used to return the results of the method call back to the caller.
Example
[Visual Basic, C#, C++] The following example code shows a custom proxy that overrides RealProxy.Invoke in order to write the return message information to the console.
[Visual Basic] Public Class MyProxy Inherits RealProxy Private stringUri As String Private myMarshalByRefObject As MarshalByRefObject Public Sub New(myType As Type) MyBase.New(myType) myMarshalByRefObject = CType(Activator.CreateInstance(myType), MarshalByRefObject) Dim myObject As ObjRef = RemotingServices.Marshal(myMarshalByRefObject) stringUri = myObject.URI End Sub 'New Public Overrides Function Invoke(myMessage As IMessage) As IMessage Dim myCallMessage As IMethodCallMessage = CType(myMessage, IMethodCallMessage) Dim myIMethodReturnMessage As IMethodReturnMessage = RemotingServices. _ ExecuteMessage(myMarshalByRefObject, myCallMessage) Console.WriteLine("Method name : " + myIMethodReturnMessage.MethodName) Console.WriteLine("The return value is : " + myIMethodReturnMessage.ReturnValue) ' Get number of 'ref' and 'out' parameters. Dim myArgOutCount As Integer = myIMethodReturnMessage.OutArgCount Console.WriteLine("The number of 'ref', 'out' parameters are : " + _ myIMethodReturnMessage.OutArgCount.ToString()) ' Gets name and values of 'ref' and 'out' parameters. Dim i As Integer For i = 0 To myArgOutCount - 1 Console.WriteLine("Name of argument {0} is '{1}'.", i, _ myIMethodReturnMessage.GetOutArgName(i)) Console.WriteLine("Value of argument {0} is '{1}'.", i, _ myIMethodReturnMessage.GetOutArg(i)) Next i Console.WriteLine() Dim myObjectArray As Object() = myIMethodReturnMessage.OutArgs For i = 0 To myObjectArray.Length - 1 Console.WriteLine("Value of argument {0} is '{1}' in OutArgs", i, myObjectArray(i)) Next i Return myIMethodReturnMessage End Function 'Invoke End Class 'MyProxy [C#] public class MyProxy : RealProxy { String stringUri; MarshalByRefObject myMarshalByRefObject; public MyProxy(Type myType): base(myType) { myMarshalByRefObject = (MarshalByRefObject)Activator.CreateInstance(myType); ObjRef myObject = RemotingServices.Marshal(myMarshalByRefObject); stringUri = myObject.URI; } public override IMessage Invoke(IMessage myMessage) { IMethodCallMessage myCallMessage = (IMethodCallMessage)myMessage; IMethodReturnMessage myIMethodReturnMessage = RemotingServices.ExecuteMessage(myMarshalByRefObject, myCallMessage); Console.WriteLine("Method name : " + myIMethodReturnMessage.MethodName); Console.WriteLine("The return value is : " + myIMethodReturnMessage.ReturnValue); // Get number of 'ref' and 'out' parameters. int myArgOutCount = myIMethodReturnMessage.OutArgCount; Console.WriteLine("The number of 'ref', 'out' parameters are : " + myIMethodReturnMessage.OutArgCount); // Gets name and values of 'ref' and 'out' parameters. for(int i = 0; i < myArgOutCount; i++) { Console.WriteLine("Name of argument {0} is '{1}'.", i, myIMethodReturnMessage.GetOutArgName(i)); Console.WriteLine("Value of argument {0} is '{1}'.", i, myIMethodReturnMessage.GetOutArg(i)); } Console.WriteLine(); object[] myObjectArray = myIMethodReturnMessage.OutArgs; for(int i = 0; i < myObjectArray.Length; i++) Console.WriteLine("Value of argument {0} is '{1}' in OutArgs", i, myObjectArray[i]); return myIMethodReturnMessage; } } [C++] public __gc class MyProxy : public RealProxy { String* stringUri; MarshalByRefObject* myMarshalByRefObject; public: MyProxy(Type* myType) : RealProxy(myType) { myMarshalByRefObject = dynamic_cast<MarshalByRefObject*>(Activator::CreateInstance(myType)); ObjRef* myObject = RemotingServices::Marshal(myMarshalByRefObject); stringUri = myObject->URI; } public: IMessage* Invoke(IMessage* myMessage) { IMethodCallMessage* myCallMessage = dynamic_cast<IMethodCallMessage*>(myMessage); IMethodReturnMessage* myIMethodReturnMessage = RemotingServices::ExecuteMessage(myMarshalByRefObject, myCallMessage); Console::WriteLine(S"Method name : {0}", myIMethodReturnMessage->MethodName); Console::WriteLine(S"The return value is : {0}", myIMethodReturnMessage->ReturnValue); // Get number of 'ref' and 'out' parameters. int myArgOutCount = myIMethodReturnMessage->OutArgCount; Console::WriteLine(S"The number of 'ref', 'out' parameters are : {0}", __box(myIMethodReturnMessage->OutArgCount)); // Gets name and values of 'ref' and 'out' parameters. for (int i = 0; i < myArgOutCount; i++) { Console::WriteLine(S"Name of argument {0} is ' {1}'.", __box(i), myIMethodReturnMessage->GetOutArgName(i)); Console::WriteLine(S"Value of argument {0} is ' {1}'.", __box(i), myIMethodReturnMessage->GetOutArg(i)); } Console::WriteLine(); Object* myObjectArray[] = myIMethodReturnMessage->OutArgs; for (int i = 0; i < myObjectArray->Length; i++) Console::WriteLine(S"Value of argument {0} is ' {1}' in OutArgs", __box(i), myObjectArray[i]); return myIMethodReturnMessage; } };
[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button
in the upper-left corner of the page.
Requirements
Namespace: System.Runtime.Remoting.Messaging
Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family
Assembly: Mscorlib (in Mscorlib.dll)
See Also
IMethodReturnMessage Members | System.Runtime.Remoting.Messaging Namespace