ObjRefとは? わかりやすく解説

ObjRef クラス

プロキシを生成してリモート オブジェクトと通信するために必要なすべての関連情報を格納します。

名前空間: System.Runtime.Remoting
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Class ObjRef
    Implements IObjectReference, ISerializable
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public class ObjRef : IObjectReference, ISerializable
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public ref class ObjRef : IObjectReference,
 ISerializable
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public class ObjRef implements IObjectReference,
 ISerializable
SerializableAttribute 
ComVisibleAttribute(true) 
public class ObjRef implements IObjectReference,
 ISerializable
解説解説

ObjRef は、MarshalByRefObject (MBR) を拡張するオブジェクトのシリアル化可能な表現です。ObjRef は、AppDomain 境界を超えてオブジェクト参照を転送するために使用します。オブジェクトの ObjRef を作成することをマーシャリングと言います。MBR オブジェクトをリモート処理インフラストラクチャ (RemotingConfiguration と RemotingServices.Marshal のトピックを参照) に登録することによって明示的に、またはリモート オブジェクトを呼び出すときにパラメータとして MBR オブジェクトを渡すことによって暗黙に ObjRef を作成 (MarshalByRefObject をマーシャリング) できます。リモート処理は、ObjRef オブジェクトを使用して、リモート処理中の MarshalByRefObject についてのすべての関連情報を格納および送信します。

ObjRef は、マーシャリングしているオブジェクトの Type とクラスを記述する情報、その正確な場所、そのオブジェクトが配置されているリモート処理サブ区分に到達する方法についての通信関連情報を格納します。

MarshalByRefObject を実装しているクラスをマーシャリングした後に、そのクラスを表す ObjRef は、チャネルを通じて別のアプリケーション ドメイン、場合によっては別のプロセスまたはコンピュータに転送されます。ObjRef は、対象アプリケーション ドメインで逆シリアル化 (「XML シリアル化および SOAP シリアル化」を参照) したときに、リモート MBR オブジェクトの透過プロキシを作成するために解析されます。この操作をマーシャリング解除と言います。

透過プロキシは、実際のオブジェクトがクライアントの領域に格納されているように見せかけるオブジェクトです。これは、リモート処理インフラストラクチャを使用して、自らに対する呼び出しを実際のオブジェクトに転送することによって実現されます。透過プロキシ自体は、RealProxy 型のマネージ ランタイム クラスのインスタンスに格納されます。RealProxy は、透過プロキシから操作を転送するために必要な機能の一部を実装します。

プロキシ オブジェクトは、AppDomain 内のリモート処理サブ区分を考慮せずに使用できます。アプリケーションは、プロキシ参照とオブジェクト参照を区別する必要がありません。ただし、アクティベーション、有効期間の管理、トランザクションなどの問題を扱うサービス プロバイダは、このような区別を行う必要があります。

このクラスは、リンク確認要求と継承確認要求をクラス レベルで行います。直前の呼び出し元または派生クラスにインフラストラクチャ アクセス許可がない場合、SecurityException がスローされます。セキュリティ要求の詳細については、「リンク確認要求」および「継承確認要求」を参照してください。

使用例使用例

カスタム ObjRef の使用方法を示すコード例を次に示します。カスタム ObjRef をテストするアクティベーション コードを表示するには、RegisterWellKnownServiceType メソッドのトピックの例を参照してください。

' a custom ObjRef class that outputs its status
<PermissionSet(SecurityAction.Demand, Name:="FullTrust")>
 _
Public Class MyObjRef
   Inherits ObjRef

   ' only instantiate using marshaling or deserialization
   Private Sub New()
   End Sub

   Public Sub New(ByVal
 o As MarshalByRefObject, ByVal t As
 Type)
      MyBase.New(o, t)
      Console.WriteLine("Created MyObjRef.")
      ORDump()
   End Sub

   Public Sub New(ByVal
 i As SerializationInfo, ByVal c As
 StreamingContext)
      MyBase.New(i, c)
      Console.WriteLine("Deserialized MyObjRef.")
   End Sub

   Public Overrides Sub
 GetObjectData(ByVal s As SerializationInfo,
 ByVal c As StreamingContext)
      ' After calling the base method, change the type from ObjRef to
 MyObjRef
      MyBase.GetObjectData(s, c)
      s.SetType([GetType]())
      Console.WriteLine("Serialized MyObjRef.")
   End Sub

   Public Overrides Function
 GetRealObject(ByVal context As StreamingContext)
 As [Object]
      If IsFromThisAppDomain() Or IsFromThisProcess()
 Then
         Console.WriteLine("Returning actual object referenced
 by MyObjRef.")
         Return MyBase.GetRealObject(context)
      Else
         Console.WriteLine("Returning proxy to remote object.")
         Return RemotingServices.Unmarshal(Me)
      End If
   End Function

   Public Sub ORDump()
      Console.WriteLine(" --- Reporting MyObjRef Info --- ")
      Console.WriteLine("Reference to {0}.", TypeInfo.TypeName)
      Console.WriteLine("URI is {0}.", URI)

      Console.WriteLine(ControlChars.Cr + "Writing EnvoyInfo:
 ")
      If Not (EnvoyInfo Is
 Nothing) Then
         Dim EISinks As IMessageSink = EnvoyInfo.EnvoySinks
         Dim count As Integer
 = 0
         While Not (EISinks Is
 Nothing)
            Console.WriteLine(ControlChars.Tab + "Interated through
 sink #{0}", (count = count + 1))
            EISinks = EISinks.NextSink
         End While
      Else
         Console.WriteLine(ControlChars.Tab + " {no sinks}")
      End If
      Console.WriteLine(ControlChars.Cr + "Writing ChannelInfo:
 ")
      Dim i As Integer
      For i = 0 To ChannelInfo.ChannelData.Length
 - 1
         Console.WriteLine(ControlChars.Tab + "Channel: {0}",
 ChannelInfo.ChannelData(i))
      Next i
      Console.WriteLine(" ----------------------------- ")
   End Sub
   
End Class


' a class that uses MyObjRef
<PermissionSet(SecurityAction.Demand, Name:="FullTrust")>
 _
Public Class LocalObject
   Inherits MarshalByRefObject

   ' overriding CreateObjRef will allow us to return a custom ObjRef
   Public Overrides Function
 CreateObjRef(ByVal t As Type) As
 ObjRef
      Return New MyObjRef(Me,
 t)
   End Function

End Class
// a custom ObjRef class that outputs its status
[PermissionSet(SecurityAction.Demand, Name="FullTrust")]
public class MyObjRef : ObjRef {
   
   // only instantiate using marshaling or deserialization
   private MyObjRef() { }

   public MyObjRef(MarshalByRefObject o, Type t) : base(o,
 t)  {
      Console.WriteLine("Created MyObjRef.");
      ORDump();
   }

   public MyObjRef(SerializationInfo i, StreamingContext c) :
 base(i, c) {
      Console.WriteLine("Deserialized MyObjRef.");
   }

   public override void GetObjectData(SerializationInfo
 s, StreamingContext c) {
      // After calling the base method, change the type from ObjRef
 to MyObjRef
      base.GetObjectData(s, c);
      s.SetType(GetType());
      Console.WriteLine("Serialized MyObjRef.");
   }

   public override Object GetRealObject(StreamingContext context)
 {

      if ( IsFromThisAppDomain() || IsFromThisProcess() ) {
         Console.WriteLine("Returning actual object referenced by MyObjRef.");
         return base.GetRealObject(context);
      }
      else {
         Console.WriteLine("Returning proxy to remote object.");
         return RemotingServices.Unmarshal(this);
      }
   }   

   public void ORDump() {

      Console.WriteLine(" --- Reporting MyObjRef Info --- ");
      Console.WriteLine("Reference to {0}.", TypeInfo.TypeName);
      Console.WriteLine("URI is {0}.", URI);
      Console.WriteLine("\nWriting EnvoyInfo: ");

      if ( EnvoyInfo != null) {
         
         IMessageSink EISinks = EnvoyInfo.EnvoySinks;
         while (EISinks != null) {
            Console.WriteLine("\tSink: " + EISinks.ToString());  
            EISinks = EISinks.NextSink;
         }
      }
      else
         Console.WriteLine("\t {no sinks}");

      Console.WriteLine("\nWriting ChannelInfo: ");
      for (int i = 0; i < ChannelInfo.ChannelData.Length;
 i++)
         Console.WriteLine ("\tChannel: {0}", ChannelInfo.ChannelData[i]);
      Console.WriteLine(" ----------------------------- ");
   }
}


// a class that uses MyObjRef
[PermissionSet(SecurityAction.Demand, Name="FullTrust")]
public class LocalObject : MarshalByRefObject
 {
   // overriding CreateObjRef will allow us to return a custom ObjRef
   public override ObjRef CreateObjRef(Type t) {
      return new MyObjRef(this,
 t);
   }
}
// a custom ObjRef class that outputs its status
[System::Security::Permissions::SecurityPermissionAttribute(
   System::Security::Permissions::SecurityAction::Demand, 
   Flags=System::Security::Permissions::SecurityPermissionFlag::SerializationFormatter)]
[System::Security::Permissions::SecurityPermissionAttribute
(System::Security::Permissions::SecurityAction::Demand, 
Flags=System::Security::Permissions::SecurityPermissionFlag::Infrastructure)]   
 
[System::Security::Permissions::SecurityPermissionAttribute
(System::Security::Permissions::SecurityAction::InheritanceDemand, 
Flags=System::Security::Permissions::SecurityPermissionFlag::Infrastructure)]
public ref class MyObjRef: public
 ObjRef
{
private:

   // only instantiate using marshaling or deserialization
   MyObjRef(){}

public:
   MyObjRef( MarshalByRefObject^ o, Type^ t )
      : ObjRef( o, t )
   {
      Console::WriteLine( "Created MyObjRef." );
      ORDump();
   }

   MyObjRef( SerializationInfo^ i, StreamingContext c )
      : ObjRef( i, c )
   {
      Console::WriteLine( "Deserialized MyObjRef." );
   }

   virtual void GetObjectData( SerializationInfo^ s, StreamingContext
 c ) override
   {
      // After calling the base method, change the type from ObjRef
 to MyObjRef
      ObjRef::GetObjectData( s, c );
      s->SetType( GetType() );
      Console::WriteLine( "Serialized MyObjRef." );
   }

   virtual Object^ GetRealObject( StreamingContext context ) override
   {
      if ( IsFromThisAppDomain() || IsFromThisProcess() )
      {
         Console::WriteLine( "Returning actual Object^ referenced by MyObjRef."
 );
         return ObjRef::GetRealObject( context );
      }
      else
      {
         Console::WriteLine( "Returning proxy to remote Object^." );
         return RemotingServices::Unmarshal( this
 );
      }
   }

   void ORDump()
   {
      Console::WriteLine( " --- Reporting MyObjRef Info --- " );
      Console::WriteLine( "Reference to {0}.", TypeInfo->TypeName );
      Console::WriteLine( "URI is {0}.", URI );
      Console::WriteLine( "\nWriting EnvoyInfo: " );
      if ( EnvoyInfo != nullptr )
      {
         IMessageSink^ EISinks = EnvoyInfo->EnvoySinks;
         while ( EISinks != nullptr )
         {
            Console::WriteLine( "\tSink: {0}", EISinks );
            EISinks = EISinks->NextSink;
         }
      }
      else
            Console::WriteLine( "\t {no sinks}" );

      Console::WriteLine( "\nWriting ChannelInfo: " );
      for ( int i = 0; i < ChannelInfo->ChannelData->Length;
 i++ )
         Console::WriteLine( "\tChannel: {0}", ChannelInfo->ChannelData[
 i ] );
      Console::WriteLine( " ----------------------------- " );
   }

};

// a class that uses MyObjRef
public ref class LocalObject: public
 MarshalByRefObject
{
public:

   // overriding CreateObjRef will allow us to return a custom ObjRef
   [System::Security::Permissions::SecurityPermissionAttribute
   (System::Security::Permissions::SecurityAction::LinkDemand,
   Flags=System::Security::Permissions::SecurityPermissionFlag::Infrastructure)]
   virtual ObjRef^ CreateObjRef( Type^ t ) override
   {
      return gcnew MyObjRef( this,t );
   }
};
.NET Framework のセキュリティ.NET Framework のセキュリティ
継承階層継承階層
System.Object
  System.Runtime.Remoting.ObjRef
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバの場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
ObjRef メンバ
System.Runtime.Remoting 名前空間
ISerializable
RemotingServices.Marshal
RemotingServices.Unmarshal
RealProxy

ObjRef コンストラクタ ()


ObjRef コンストラクタ (MarshalByRefObject, Type)

指定した Type の指定した MarshalByRefObject を参照して、ObjRef クラスの新しいインスタンスを初期化します。

名前空間: System.Runtime.Remoting
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Sub New ( _
    o As MarshalByRefObject, _
    requestedType As Type _
)
Dim o As MarshalByRefObject
Dim requestedType As Type

Dim instance As New ObjRef(o,
 requestedType)
public ObjRef (
    MarshalByRefObject o,
    Type requestedType
)
public:
ObjRef (
    MarshalByRefObject^ o, 
    Type^ requestedType
)
public ObjRef (
    MarshalByRefObject o, 
    Type requestedType
)
public function ObjRef (
    o : MarshalByRefObject, 
    requestedType : Type
)

パラメータ

o

新しい ObjRef インスタンスが参照するオブジェクト。

requestedType

新しい ObjRef インスタンスが参照するオブジェクトの Type。

使用例使用例
// a custom ObjRef class that outputs its status
[PermissionSet(SecurityAction.Demand, Name="FullTrust")]
public class MyObjRef : ObjRef {
   
   // only instantiate via marshaling or deserialization
   private MyObjRef() { }

   public MyObjRef(MarshalByRefObject o, Type t) : base(o,
 t) {
      Console.WriteLine("Created MyObjRef.");
      ORDump();
   }

   public MyObjRef(SerializationInfo i, StreamingContext c) :
 base(i, c) {
      Console.WriteLine("Deserialized MyObjRef.");
   }

   public override void GetObjectData(SerializationInfo
 s, StreamingContext c) {
      // After calling the base method, change the type from ObjRef
 to MyObjRef
      base.GetObjectData(s, c);
      s.SetType(GetType());
      Console.WriteLine("Serialized MyObjRef.");
   }

   public override Object GetRealObject(StreamingContext context)
 {

      if ( IsFromThisAppDomain() || IsFromThisProcess() )  {
         Console.WriteLine("Returning actual object referenced by MyObjRef.");
         return base.GetRealObject(context);
      }
      else {
         Console.WriteLine("Returning proxy to remote object.");
         return RemotingServices.Unmarshal(this);
      }
   }   

   public void ORDump() {

      Console.WriteLine(" --- Reporting MyObjRef Info --- ");
      Console.WriteLine("Reference to {0}.", TypeInfo.TypeName);
      Console.WriteLine("URI is {0}.", URI);

      Console.WriteLine("\nWriting EnvoyInfo: ");
      
      if ( EnvoyInfo != null) {

         IMessageSink EISinks = EnvoyInfo.EnvoySinks;

         while (EISinks != null) {
            Console.WriteLine("\tSink: " + EISinks.ToString());  
            EISinks = EISinks.NextSink;
         }
      }
      else
         Console.WriteLine("\t {no sinks}");

      Console.WriteLine("\nWriting ChannelInfo: ");
      for (int i = 0; i < ChannelInfo.ChannelData.Length;
 i++)
         Console.WriteLine ("\tChannel: {0}", ChannelInfo.ChannelData[i]);
      
      Console.WriteLine(" ----------------------------- ");
   }
}

// a class that uses MyObjRef
[PermissionSet(SecurityAction.Demand, Name="FullTrust")]
public class LocalObject : MarshalByRefObject
  {

   // overriding CreateObjRef will allow us to return a custom ObjRef
   public override ObjRef CreateObjRef(Type t) {

      return new MyObjRef(this,
 t);
   }
}
// a custom ObjRef class that outputs its status
[System::Security::Permissions::SecurityPermissionAttribute(
   System::Security::Permissions::SecurityAction::Demand,
   Flags=System::Security::Permissions::SecurityPermissionFlag::SerializationFormatter)]
[System::Security::Permissions::SecurityPermissionAttribute
(System::Security::Permissions::SecurityAction::Demand, 
Flags=System::Security::Permissions::SecurityPermissionFlag::Infrastructure)]   
 
[System::Security::Permissions::SecurityPermissionAttribute
(System::Security::Permissions::SecurityAction::InheritanceDemand, 
Flags=System::Security::Permissions::SecurityPermissionFlag::Infrastructure)]

public ref class MyObjRef: public
 ObjRef
{
private:

   // only instantiate via marshaling or deserialization
   MyObjRef(){}

public:
   MyObjRef( MarshalByRefObject^ o, Type^ t )
      : ObjRef( o, t )
   {
      Console::WriteLine( "Created MyObjRef." );
      ORDump();
   }

   MyObjRef( SerializationInfo^ i, StreamingContext c )
      : ObjRef( i, c )
   {
      Console::WriteLine( "Deserialized MyObjRef." );
   }

   virtual void GetObjectData( SerializationInfo^ s, StreamingContext
 c ) override
   {
      
      // After calling the base method, change the type from ObjRef
 to MyObjRef
      ObjRef::GetObjectData( s, c );
      s->SetType( GetType() );
      Console::WriteLine( "Serialized MyObjRef." );
   }
   
   virtual Object^ GetRealObject( StreamingContext context ) override
   {
      if ( IsFromThisAppDomain() || IsFromThisProcess() )
      {
         Console::WriteLine( "Returning actual Object* referenced by MyObjRef."
 );
         return ObjRef::GetRealObject( context );
      }
      else
      {
         Console::WriteLine( "Returning proxy to remote Object*." );
         return RemotingServices::Unmarshal( this
 );
      }
   }

   void ORDump()
   {
      Console::WriteLine( " --- Reporting MyObjRef Info --- " );
      Console::WriteLine( "Reference to {0}.", TypeInfo->TypeName );
      Console::WriteLine( "URI is {0}.", URI );
      Console::WriteLine( "\nWriting EnvoyInfo: " );
      if ( EnvoyInfo != nullptr )
      {
         IMessageSink^ EISinks = EnvoyInfo->EnvoySinks;
         while ( EISinks != nullptr )
         {
            Console::WriteLine( "\tSink: {0}", EISinks );
            EISinks = EISinks->NextSink;
         }
      }
      else
            Console::WriteLine( "\t {no sinks}" );

      Console::WriteLine( "\nWriting ChannelInfo: " );
      for ( int i = 0; i < ChannelInfo->ChannelData->Length;
 i++ )
         Console::WriteLine( "\tChannel: {0}", ChannelInfo->ChannelData[
 i ] );
      Console::WriteLine( " ----------------------------- " );
   }
};

// a class that uses MyObjRef
public ref class LocalObject: public
 MarshalByRefObject
{
public:

   // overriding CreateObjRef will allow us to return a custom ObjRef
   [System::Security::Permissions::SecurityPermissionAttribute
   (System::Security::Permissions::SecurityAction::LinkDemand,
   Flags=System::Security::Permissions::SecurityPermissionFlag::Infrastructure)]
   virtual ObjRef^ CreateObjRef( Type^ t ) override
   {
      return gcnew MyObjRef( this,t );
   }
};
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
ObjRef クラス
ObjRef メンバ
System.Runtime.Remoting 名前空間

ObjRef コンストラクタ (SerializationInfo, StreamingContext)

シリアル化したデータから、ObjRef クラスの新しいインスタンスを初期化します。

名前空間: System.Runtime.Remoting
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Protected Sub New ( _
    info As SerializationInfo, _
    context As StreamingContext _
)
Dim info As SerializationInfo
Dim context As StreamingContext

Dim instance As New ObjRef(info,
 context)
protected ObjRef (
    SerializationInfo info,
    StreamingContext context
)
protected:
ObjRef (
    SerializationInfo^ info, 
    StreamingContext context
)
protected ObjRef (
    SerializationInfo info, 
    StreamingContext context
)
protected function ObjRef (
    info : SerializationInfo, 
    context : StreamingContext
)

パラメータ

info

シリアル化されたオブジェクト データを保持するオブジェクト。

context

例外の発生元または発生先に関するコンテキスト情報。

解説解説
使用例使用例
// a custom ObjRef class that outputs its status
[PermissionSet(SecurityAction.Demand, Name="FullTrust")]
public class MyObjRef : ObjRef {
   
   // only instantiate via marshaling or deserialization
   private MyObjRef() { }

   public MyObjRef(MarshalByRefObject o, Type t) : base(o,
 t) {
      Console.WriteLine("Created MyObjRef.");
      ORDump();
   }

   public MyObjRef(SerializationInfo i, StreamingContext c) :
 base(i, c) {
      Console.WriteLine("Deserialized MyObjRef.");
   }

   public override void GetObjectData(SerializationInfo
 s, StreamingContext c) {
      // After calling the base method, change the type from ObjRef
 to MyObjRef
      base.GetObjectData(s, c);
      s.SetType(GetType());
      Console.WriteLine("Serialized MyObjRef.");
   }

   public override Object GetRealObject(StreamingContext context)
 {

      if ( IsFromThisAppDomain() || IsFromThisProcess() )  {
         Console.WriteLine("Returning actual object referenced by MyObjRef.");
         return base.GetRealObject(context);
      }
      else {
         Console.WriteLine("Returning proxy to remote object.");
         return RemotingServices.Unmarshal(this);
      }
   }   

   public void ORDump() {

      Console.WriteLine(" --- Reporting MyObjRef Info --- ");
      Console.WriteLine("Reference to {0}.", TypeInfo.TypeName);
      Console.WriteLine("URI is {0}.", URI);

      Console.WriteLine("\nWriting EnvoyInfo: ");
      
      if ( EnvoyInfo != null) {

         IMessageSink EISinks = EnvoyInfo.EnvoySinks;

         while (EISinks != null) {
            Console.WriteLine("\tSink: " + EISinks.ToString());  
            EISinks = EISinks.NextSink;
         }
      }
      else
         Console.WriteLine("\t {no sinks}");

      Console.WriteLine("\nWriting ChannelInfo: ");
      for (int i = 0; i < ChannelInfo.ChannelData.Length;
 i++)
         Console.WriteLine ("\tChannel: {0}", ChannelInfo.ChannelData[i]);
      
      Console.WriteLine(" ----------------------------- ");
   }
}

// a class that uses MyObjRef
[PermissionSet(SecurityAction.Demand, Name="FullTrust")]
public class LocalObject : MarshalByRefObject
  {

   // overriding CreateObjRef will allow us to return a custom ObjRef
   public override ObjRef CreateObjRef(Type t) {

      return new MyObjRef(this,
 t);
   }
}
// a custom ObjRef class that outputs its status
[System::Security::Permissions::SecurityPermissionAttribute(
   System::Security::Permissions::SecurityAction::Demand,
   Flags=System::Security::Permissions::SecurityPermissionFlag::SerializationFormatter)]
[System::Security::Permissions::SecurityPermissionAttribute
(System::Security::Permissions::SecurityAction::Demand, 
Flags=System::Security::Permissions::SecurityPermissionFlag::Infrastructure)]   
 
[System::Security::Permissions::SecurityPermissionAttribute
(System::Security::Permissions::SecurityAction::InheritanceDemand, 
Flags=System::Security::Permissions::SecurityPermissionFlag::Infrastructure)]

public ref class MyObjRef: public
 ObjRef
{
private:

   // only instantiate via marshaling or deserialization
   MyObjRef(){}

public:
   MyObjRef( MarshalByRefObject^ o, Type^ t )
      : ObjRef( o, t )
   {
      Console::WriteLine( "Created MyObjRef." );
      ORDump();
   }

   MyObjRef( SerializationInfo^ i, StreamingContext c )
      : ObjRef( i, c )
   {
      Console::WriteLine( "Deserialized MyObjRef." );
   }

   virtual void GetObjectData( SerializationInfo^ s, StreamingContext
 c ) override
   {
      
      // After calling the base method, change the type from ObjRef
 to MyObjRef
      ObjRef::GetObjectData( s, c );
      s->SetType( GetType() );
      Console::WriteLine( "Serialized MyObjRef." );
   }
   
   virtual Object^ GetRealObject( StreamingContext context ) override
   {
      if ( IsFromThisAppDomain() || IsFromThisProcess() )
      {
         Console::WriteLine( "Returning actual Object* referenced by MyObjRef."
 );
         return ObjRef::GetRealObject( context );
      }
      else
      {
         Console::WriteLine( "Returning proxy to remote Object*." );
         return RemotingServices::Unmarshal( this
 );
      }
   }

   void ORDump()
   {
      Console::WriteLine( " --- Reporting MyObjRef Info --- " );
      Console::WriteLine( "Reference to {0}.", TypeInfo->TypeName );
      Console::WriteLine( "URI is {0}.", URI );
      Console::WriteLine( "\nWriting EnvoyInfo: " );
      if ( EnvoyInfo != nullptr )
      {
         IMessageSink^ EISinks = EnvoyInfo->EnvoySinks;
         while ( EISinks != nullptr )
         {
            Console::WriteLine( "\tSink: {0}", EISinks );
            EISinks = EISinks->NextSink;
         }
      }
      else
            Console::WriteLine( "\t {no sinks}" );

      Console::WriteLine( "\nWriting ChannelInfo: " );
      for ( int i = 0; i < ChannelInfo->ChannelData->Length;
 i++ )
         Console::WriteLine( "\tChannel: {0}", ChannelInfo->ChannelData[
 i ] );
      Console::WriteLine( " ----------------------------- " );
   }
};

// a class that uses MyObjRef
public ref class LocalObject: public
 MarshalByRefObject
{
public:

   // overriding CreateObjRef will allow us to return a custom ObjRef
   [System::Security::Permissions::SecurityPermissionAttribute
   (System::Security::Permissions::SecurityAction::LinkDemand,
   Flags=System::Security::Permissions::SecurityPermissionFlag::Infrastructure)]
   virtual ObjRef^ CreateObjRef( Type^ t ) override
   {
      return gcnew MyObjRef( this,t );
   }
};
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
ObjRef クラス
ObjRef メンバ
System.Runtime.Remoting 名前空間

ObjRef コンストラクタ

ObjRef クラスの新しいインスタンスを初期化します。
オーバーロードの一覧オーバーロードの一覧

名前 説明
ObjRef () ObjRef クラスの新しいインスタンスを既定値で初期化します。
ObjRef (MarshalByRefObject, Type) 指定した Type の指定した MarshalByRefObject を参照して、ObjRef クラスの新しいインスタンスを初期化します。
ObjRef (SerializationInfo, StreamingContext) シリアル化したデータから、ObjRef クラスの新しいインスタンスを初期化します。
参照参照

関連項目

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

ObjRef プロパティ


パブリック プロパティパブリック プロパティ

  名前 説明
パブリック プロパティ ChannelInfo ObjRef の IChannelInfo を取得または設定します。
パブリック プロパティ EnvoyInfo ObjRef の IEnvoyInfo を取得または設定します。
パブリック プロパティ TypeInfo ObjRef が記述するオブジェクトの IRemotingTypeInfo を取得または設定します。
パブリック プロパティ URI 特定のオブジェクト インスタンスの URI (Uniform Resource Identifier) を取得または設定します。
参照参照

関連項目

ObjRef クラス
System.Runtime.Remoting 名前空間
ISerializable
RemotingServices.Marshal
RemotingServices.Unmarshal
RealProxy

ObjRef メソッド


パブリック メソッドパブリック メソッド

プロテクト メソッドプロテクト メソッド
参照参照

関連項目

ObjRef クラス
System.Runtime.Remoting 名前空間
ISerializable
RemotingServices.Marshal
RemotingServices.Unmarshal
RealProxy

ObjRef メンバ

プロキシを生成してリモート オブジェクトと通信するために必要なすべての関連情報を格納します。

ObjRef データ型で公開されるメンバを以下の表に示します。


パブリック コンストラクタパブリック コンストラクタ
プロテクト コンストラクタプロテクト コンストラクタ
パブリック プロパティパブリック プロパティ
  名前 説明
パブリック プロパティ ChannelInfo ObjRef の IChannelInfo を取得または設定します。
パブリック プロパティ EnvoyInfo ObjRef の IEnvoyInfo を取得または設定します。
パブリック プロパティ TypeInfo ObjRef が記述するオブジェクトの IRemotingTypeInfo を取得または設定します。
パブリック プロパティ URI 特定のオブジェクト インスタンスの URI (Uniform Resource Identifier) を取得または設定します。
パブリック メソッドパブリック メソッド
プロテクト メソッドプロテクト メソッド
参照参照

関連項目

ObjRef クラス
System.Runtime.Remoting 名前空間
ISerializable
RemotingServices.Marshal
RemotingServices.Unmarshal
RealProxy



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「ObjRef」の関連用語

ObjRefのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ObjRefのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS