次の方法で共有


RemotingServices.Marshal メソッド (MarshalByRefObject)

MarshalByRefObject を取り、これをリモート処理インフラストラクチャで登録して、 ObjRef クラスのインスタンスに変換します。

Overloads Public Shared Function Marshal( _
   ByVal Obj As MarshalByRefObject _) As ObjRef
[C#]
public static ObjRef Marshal(MarshalByRefObjectObj);
[C++]
public: static ObjRef* Marshal(MarshalByRefObject* Obj);
[JScript]
public static function Marshal(
   Obj : MarshalByRefObject) : ObjRef;

パラメータ

  • Obj
    変換対象のオブジェクト。

戻り値

Obj パラメータで指定されたオブジェクトを表している ObjRef クラスのインスタンス。

例外

例外の種類 条件
RemotingException Obj パラメータがオブジェクトのプロキシです。
SecurityException コールスタックの上位にある 1 つ以上の呼び出し元に、リモート処理の型とチャネルを構成するためのアクセス許可がありません。

解説

ObjRef は、アプリケーション ドメイン境界にわたってオブジェクト参照を転送するために使用するオブジェクトのシリアル化可能な表現です。オブジェクトの ObjRef を作成することをマーシャリングと言います。 ObjRef は、チャネルを経由して、別のプロセスやコンピュータ上にある場合もある別のアプリケーション ドメインに転送できます。他のアプリケーション ドメインに転送されたら、その ObjRef を解析して、通常は実際のオブジェクトに接続される、そのオブジェクトのプロキシを作成する必要があります。この操作は、マーシャリング解除として知られています。 ObjRef は、マーシャリング対象のオブジェクトの Type とクラスを説明する情報、特定のオブジェクト インスタンスを一意に識別する URI、およびオブジェクトが配置されているリモート処理サブ区分に到達する方法についての通信関連情報を格納します。

マーシャリング時には、オブジェクトが作成されたときにアクティブだったコンテキストではなく、現在のスレッドからのコンテキストが使用されます。URI が SetObjectUriForMarshal メソッドによって明示的に設定されていなかった場合は、リモート処理 ID インフラストラクチャによって URI が自動的に生成されます。

URI が、それ自体が表すオブジェクトに対してサーバー側で生成された場合や、URI が表すオブジェクトが既知の場合 (URI も既知になる) は、URI をプロキシに関連付けることはできません。このため、 Obj パラメータがプロキシである場合は、例外がスローされます。カスタム プロキシでは、透過プロキシがサーバー オブジェクトとして扱われるため、この制限は緩和されます。

必要条件

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

.NET Framework セキュリティ:

参照

RemotingServices クラス | RemotingServices メンバ | System.Runtime.Remoting 名前空間 | RemotingServices.Marshal オーバーロードの一覧 | Uri | アプリケーション ドメイン | RealProxy | ObjRef