次の方法で共有


RealProxy.InitializeServerObject メソッド

指定した IConstructionCallMessage を使用して、 RealProxy の現在のインスタンスが表すリモート オブジェクトのオブジェクト Type の新しいインスタンスを初期化します。

Public Function InitializeServerObject( _
   ByVal ctorMsg As IConstructionCallMessage _) As IConstructionReturnMessage
[C#]
public IConstructionReturnMessage InitializeServerObject(IConstructionCallMessagectorMsg);
[C++]
public: IConstructionReturnMessage* InitializeServerObject(IConstructionCallMessage* ctorMsg);
[JScript]
public function InitializeServerObject(
   ctorMsg : IConstructionCallMessage) : IConstructionReturnMessage;

パラメータ

  • ctorMsg
    現在の RealProxy で表されるリモート オブジェクトの新しいインスタンスのコンストラクタ パラメータを格納している構築呼び出しメッセージ。 null 参照 (Visual Basic では Nothing) でもかまいません。

戻り値

構築要求の結果。

例外

例外の種類 条件
SecurityException 直前の呼び出し元に、UnmanagedCode アクセス許可がありません。

解説

ctorMsg パラメータが null 参照 (Visual Basic では Nothing) の場合は、 InitializeServerObject メソッドが現在の RealProxy で表されるリモート オブジェクトの新しいインスタンスの既定のコンストラクタを呼び出します。

使用例

 
Public Overrides Function Invoke(myMessage As IMessage) As IMessage
   Console.WriteLine("MyProxy 'Invoke method' Called...")
   If TypeOf myMessage Is IMethodCallMessage Then
      Console.WriteLine("IMethodCallMessage")
   End If
   If TypeOf myMessage Is IMethodReturnMessage Then
      Console.WriteLine("IMethodReturnMessage")
   End If
   If TypeOf myMessage Is IConstructionCallMessage Then
      ' Initialize a new instance of remote object
      Dim myIConstructionReturnMessage As IConstructionReturnMessage = _
            Me.InitializeServerObject(CType(myMessage, IConstructionCallMessage))
      Dim constructionResponse As _
            New ConstructionResponse(Nothing, CType(myMessage, IMethodCallMessage))
      Return constructionResponse
   End If
   Dim myIDictionary As IDictionary = myMessage.Properties
   Dim returnMessage As IMessage
   myIDictionary("__Uri") = myUri
   ' Synchronously dispatch messages to server.
   returnMessage = ChannelServices.SyncDispatchMessage(myMessage)
   ' Pushing return value and OUT parameters back onto stack.
   Dim myMethodReturnMessage As IMethodReturnMessage = _
         CType(returnMessage, IMethodReturnMessage)
   Return returnMessage
End Function 'Invoke

[C#] 
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;
}

[C++] 
public:
    IMessage* Invoke(IMessage* myMessage) 
    {
        Console::WriteLine(S"MyProxy 'Invoke method' Called...");
        if (dynamic_cast<IMethodCallMessage*>(myMessage)) 
        {
            Console::WriteLine(S"IMethodCallMessage*");
        }
        if (dynamic_cast<IMethodReturnMessage*>(myMessage)) 
        {
            Console::WriteLine(S"IMethodReturnMessage*");
        }
        if (dynamic_cast<IConstructionCallMessage*>(myMessage))
        {  
            // Initialize a new instance of remote Object*
            IConstructionReturnMessage* myIConstructionReturnMessage = 
                this->InitializeServerObject(static_cast<IConstructionCallMessage*>(myMessage));
            ConstructionResponse* constructionResponse = new ConstructionResponse(0, static_cast<IMethodCallMessage*>(myMessage));
            return constructionResponse;
        }
        IDictionary* myIDictionary = myMessage->Properties;
        IMessage* returnMessage;
        myIDictionary->Item[S"__Uri"] = myUri;

        // Synchronously dispatch messages to server.
        returnMessage = ChannelServices::SyncDispatchMessage(myMessage);
        // Pushing return value and OUT parameters back onto stack.
        IMethodReturnMessage* myMethodReturnMessage = dynamic_cast<IMethodReturnMessage*>(returnMessage);
        return returnMessage;
    }

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

.NET Framework セキュリティ:

参照

RealProxy クラス | RealProxy メンバ | System.Runtime.Remoting.Proxies 名前空間