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 セキュリティ:
- SecurityPermission (アンマネージ コードを呼び出すために必要なアクセス許可)要求値: SecurityAction.LinkDemand; アクセス許可値: SecurityPermissionFlag.UnmanagedCode
参照
RealProxy クラス | RealProxy メンバ | System.Runtime.Remoting.Proxies 名前空間