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



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「ObjRef」の関連用語

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

   

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



ObjRefのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

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

©2025 GRAS Group, Inc.RSS