ReturnMessage クラス
リモート オブジェクトに対するメソッド呼び出しへの応答として返されるメッセージを保持します。
この型のすべてのメンバの一覧については、ReturnMessage メンバ を参照してください。
System.Object
System.Runtime.Remoting.Messaging.ReturnMessage
Public Class ReturnMessage
Implements IMethodReturnMessage, IMethodMessage, IMessage
[C#]
public class ReturnMessage : IMethodReturnMessage, IMethodMessage,
IMessage
[C++]
public __gc class ReturnMessage : public IMethodReturnMessage,
IMethodMessage, IMessage
[JScript]
public class ReturnMessage implements IMethodReturnMessage,
IMethodMessage, IMessage
スレッドセーフ
この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。
解説
メモ このクラスは、リンク確認要求と継承確認要求をクラス レベルで行います。直前の呼び出し元または派生クラスにインフラストラクチャ アクセス許可がない場合、 SecurityException がスローされます。セキュリティ要求の詳細については、「 リンク確認要求 」および「 継承確認要求 」を参照してください。
使用例
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 内)
.NET Framework セキュリティ:
- SecurityPermission (インフラストラクチャ コードを操作するために必要なアクセス許可)要求値: SecurityAction.LinkDemand; アクセス許可値: SecurityPermissionFlag.Infrastructure
- SecurityPermission (インフラストラクチャ コードを操作するために必要なアクセス許可)要求値: SecurityAction.InheritanceDemand; アクセス許可値: SecurityPermissionFlag.Infrastructure