次の方法で共有


RemotingServices.Marshal メソッド (MarshalByRefObject, String, Type)

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

参照

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