次の方法で共有


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 セキュリティ:

参照

ReturnMessage メンバ | System.Runtime.Remoting.Messaging 名前空間