IMethodReturnMessage インターフェイス
メソッド呼び出しの応答メッセージのインターフェイスを定義します。
この型のすべてのメンバの一覧については、IMethodReturnMessage メンバ を参照してください。
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
IMethodReturnMessage を実装するクラス
クラス | 説明 |
---|---|
ReturnMessage | リモート オブジェクトに対するメソッド呼び出しへの応答として返されるメッセージを保持します。 |
解説
メソッド呼び出しの応答メッセージは、メッセージ シンク側における、オブジェクトに対するメソッド呼び出しへの応答を表します。 IMethodReturnMessage は、リモート オブジェクトに対して呼び出されたメソッドの結果として生成され、そのメソッド呼び出しの結果を呼び出し元に返すために使用されます。
使用例
[Visual Basic, C#, C++] RealProxy.Invoke をオーバーライドして、返されたメッセージの情報をコンソールに書き込むカスタム プロキシについては、次のコード例を参照してください。
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] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
名前空間: System.Runtime.Remoting.Messaging
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
アセンブリ: Mscorlib (Mscorlib.dll 内)
参照
IMethodReturnMessage メンバ | System.Runtime.Remoting.Messaging 名前空間