MarshalByRefObject を取り、これを指定した URI と提供された Type を持つ、 ObjRef クラスのインスタンスに変換します。
Overloads Public Shared Function Marshal( _
ByVal Obj As MarshalByRefObject, _ ByVal ObjURI As String, _ ByVal RequestedType As Type _) As ObjRef
[C#]
public static ObjRef Marshal(MarshalByRefObjectObj,stringObjURI,TypeRequestedType);
[C++]
public: static ObjRef* Marshal(MarshalByRefObject* Obj,String* ObjURI,Type* RequestedType);
[JScript]
public static function Marshal(
Obj : MarshalByRefObject,ObjURI : String,RequestedType : Type) : ObjRef;
パラメータ
- Obj
ObjRef に変換するオブジェクト。 - ObjURI
Obj パラメータで指定したオブジェクトがマーシャリングされるときに使用する URI。 null 参照 (Visual Basic では Nothing) でもかまいません。 - RequestedType
Obj がマーシャリングされるときの Type 。 null 参照 (Visual Basic では Nothing) でもかまいません。
戻り値
Obj パラメータで指定されたオブジェクトを表している ObjRef クラスのインスタンス。
例外
例外の種類 | 条件 |
---|---|
RemotingException | Obj がリモート オブジェクトのプロキシであり、 ObjUri パラメータが null 参照 (Visual Basic では Nothing) ではありません。 |
SecurityException | コールスタックの上位にある 1 つ以上の呼び出し元に、リモート処理の型とチャネルを構成するためのアクセス許可がありません。 |
解説
ObjRef は、アプリケーション ドメイン境界にわたってオブジェクト参照を転送するために使用するオブジェクトのシリアル化可能な表現です。オブジェクトの ObjRef を作成することをマーシャリングと言います。 ObjRef は、チャネルを経由して、別のプロセスやコンピュータ上にある場合もある別のアプリケーション ドメインに転送できます。他のアプリケーション ドメインに転送されたら、その ObjRef を解析して、通常は実際のオブジェクトに接続される、そのオブジェクトのプロキシを作成する必要があります。この操作は、マーシャリング解除として知られています。 ObjRef は、マーシャリング対象のオブジェクトの Type とクラスを説明する情報、特定のオブジェクト インスタンスを一意に識別する URI、およびオブジェクトが配置されているリモート処理サブ区分に到達する方法についての通信関連情報を格納します。
公開された型階層のスコープを制限するために、指定した Type はリモート処理インフラストラクチャによって使用されます。たとえば、オブジェクト A がオブジェクト B から派生し、オブジェクト B がオブジェクト C から派生している場合に、 Marshal が呼び出されると、クライアントは A に対してではなく、C と B の間でプロキシをキャストできます。
マーシャリング時には、オブジェクトが作成されたときにアクティブだったコンテキストではなく、現在のスレッドからのコンテキストが使用されます。
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 セキュリティ:
- SecurityPermission (リモート処理インフラストラクチャを構成するために必要なアクセス許可)要求値: SecurityAction.Demand; アクセス許可値: SecurityPermissionFlag.RemotingConfiguration
- SecurityPermission (リモート処理インフラストラクチャを構成するために必要なアクセス許可) SecurityPermissionFlag.RemotingConfiguration (関連する列挙体)
参照
RemotingServices クラス | RemotingServices メンバ | System.Runtime.Remoting 名前空間 | RemotingServices.Marshal オーバーロードの一覧 | Uri | アプリケーション ドメイン | RealProxy | ObjRef