次の方法で共有


RemotingServices.Marshal メソッド

特定の MarshalByRefObjectObjRef クラスのインスタンスに変換して、このインスタンスをアプリケーション ドメイン間およびネットワーク上の伝送のためにシリアル化できます。

オーバーロードの一覧

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

[Visual Basic] Overloads Public Shared Function Marshal(MarshalByRefObject) As ObjRef

[C#] public static ObjRef Marshal(MarshalByRefObject);

[C++] public: static ObjRef* Marshal(MarshalByRefObject*);

[JScript] public static function Marshal(MarshalByRefObject) : ObjRef;

特定の MarshalByRefObject を、指定した URI を持つ ObjRef クラスのインスタンスに変換します。

[Visual Basic] Overloads Public Shared Function Marshal(MarshalByRefObject, String) As ObjRef

[C#] public static ObjRef Marshal(MarshalByRefObject, string);

[C++] public: static ObjRef* Marshal(MarshalByRefObject*, String*);

[JScript] public static function Marshal(MarshalByRefObject, String) : ObjRef;

MarshalByRefObject を取り、これを指定した URI と提供された Type を持つ、 ObjRef クラスのインスタンスに変換します。

[Visual Basic] Overloads Public Shared Function Marshal(MarshalByRefObject, String, Type) As ObjRef

[C#] public static ObjRef Marshal(MarshalByRefObject, string, Type);

[C++] public: static ObjRef* Marshal(MarshalByRefObject*, String*, Type*);

[JScript] public static function Marshal(MarshalByRefObject, String, Type) : ObjRef;

使用例

[Visual Basic, C#, C++] 現在の Marshal メソッドを使用して、指定したオブジェクトをマーシャリングする方法の例を次に示します。

[Visual Basic, C#, C++] メモ   ここでは、Marshal のオーバーロード形式のうちの 1 つだけについて、使用例を示します。その他の例については、各オーバーロード形式のトピックを参照してください。

 
Dim channel As New TcpChannel(9000)
ChannelServices.RegisterChannel(channel)

Dim objectWellKnown As New SampleWellKnown()
' After the channel is registered, the object needs to be registered
' with the remoting infrastructure.  So, Marshal is called.
Dim objrefWellKnown As ObjRef = RemotingServices.Marshal(objectWellKnown, "objectWellKnownUri")
Console.WriteLine("An instance of SampleWellKnown type is published at {0}.", objrefWellKnown.URI)

Console.WriteLine("Press enter to unregister SampleWellKnown, so that it is no longer available on this channel.")
Console.ReadLine()
RemotingServices.Disconnect(objectWellKnown)
Console.WriteLine("Press enter to end the server process.")
Console.ReadLine()

[C#] 
TcpChannel channel = new TcpChannel(9000);
ChannelServices.RegisterChannel(channel);

SampleWellKnown objectWellKnown = new SampleWellKnown();

// After the channel is registered, the object needs to be registered
// with the remoting infrastructure.  So, Marshal is called.
ObjRef objrefWellKnown = RemotingServices.Marshal(objectWellKnown, "objectWellKnownUri");
Console.WriteLine("An instance of SampleWellKnown type is published at {0}.", objrefWellKnown.URI);

Console.WriteLine("Press enter to unregister SampleWellKnown, so that it is no longer available on this channel.");
Console.ReadLine();
RemotingServices.Disconnect(objectWellKnown);

Console.WriteLine("Press enter to end the server process.");
Console.ReadLine();

[C++] 
TcpChannel* channel = new TcpChannel(9000);
ChannelServices::RegisterChannel(channel);

SampleWellKnown* objectWellKnown = new SampleWellKnown();

// After the channel is registered, the Object* needs to be registered
// with the remoting infrastructure.  So, Marshal is called.
ObjRef* objrefWellKnown = RemotingServices::Marshal(objectWellKnown, S"objectWellKnownUri");
Console::WriteLine(S"An instance of SampleWellKnown type is published at {0}.", objrefWellKnown->URI);

Console::WriteLine(S"Press enter to unregister SampleWellKnown, so that it is no longer available on this channel.");
Console::ReadLine();
RemotingServices::Disconnect(objectWellKnown);

Console::WriteLine(S"Press enter to end the server process.");
Console::ReadLine();

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

参照

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