Baca dalam bahasa Inggris

Bagikan melalui


ObjRef Kelas

Definisi

Menyimpan semua informasi relevan yang diperlukan untuk menghasilkan proksi untuk berkomunikasi dengan objek jarak jauh.

C#
[System.Serializable]
public class ObjRef : System.Runtime.Serialization.IObjectReference, System.Runtime.Serialization.ISerializable
C#
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class ObjRef : System.Runtime.Serialization.IObjectReference, System.Runtime.Serialization.ISerializable
C#
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
[System.Security.SecurityCritical]
public class ObjRef : System.Runtime.Serialization.IObjectReference, System.Runtime.Serialization.ISerializable
Warisan
ObjRef
Atribut
Penerapan

Contoh

Contoh kode berikut menunjukkan penggunaan kustom ObjRef. Untuk melihat kode aktivasi yang menguji kustom ObjRef, lihat contoh untuk metode .RegisterWellKnownServiceType

C#
// a custom ObjRef class that outputs its status
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
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);
   }
}

Keterangan

ObjRef adalah representasi objek yang dapat diserialisasikan MarshalByRefObject yang meluas (MBR). ObjRef digunakan untuk mentransfer referensi objek di seluruh AppDomain batas. ObjRef Membuat untuk objek dikenal sebagai marshaling. Anda dapat membuat ObjRef (marshal a MarshalByRefObject) baik secara eksplisit, dengan mendaftarkan objek MBR dengan infrastruktur jarak jauh (lihat RemotingConfiguration dan RemotingServices.Marshal), atau secara implisit, dengan meneruskan objek MBR sebagai parameter saat memanggil objek jarak jauh. Remoting menggunakan ObjRef objek untuk menyimpan dan mengirimkan semua informasi yang relevan tentang yang MarshalByRefObject di-remote.

berisi ObjRef informasi yang menjelaskan Type kelas dan objek yang di-marshal, lokasinya yang tepat, dan informasi terkait komunikasi tentang cara mencapai subdivisi jarak jauh tempat objek berada.

Setelah penerapan MarshalByRefObject kelas di-marshal, ObjRef yang mewakilinya ditransfer melalui saluran ke domain aplikasi lain, mungkin dalam proses atau komputer lain. ObjRef Ketika dideserialisasi (lihat Serialisasi XML dan SOAP) di domain aplikasi target, diurai untuk membuat proksi transparan untuk objek MBR jarak jauh. Operasi ini dikenal sebagai unmarshaling.

Proksi transparan adalah objek yang memberikan ilusi bahwa objek aktual berada di ruang klien. Ini dicapai dengan meneruskan panggilan yang dilakukan di atasnya ke objek nyata menggunakan infrastruktur jarak jauh. Proksi transparan itu sendiri ditempatkan oleh instans kelas run-time terkelola dari jenis RealProxy. mengimplementasikan RealProxy bagian dari fungsionalitas yang diperlukan untuk meneruskan operasi dari proksi transparan.

Objek proksi dapat digunakan tanpa memperhatikan subdivisi jarak jauh dalam AppDomain. Aplikasi tidak perlu membedakan antara referensi proksi dan referensi objek. Namun, penyedia layanan yang menangani masalah seperti aktivasi, manajemen seumur hidup, dan transaksi perlu membuat perbedaan tersebut.

Kelas ini membuat permintaan tautan dan permintaan warisan di tingkat kelas. SecurityException dilemparkan ketika pemanggil langsung atau kelas turunan tidak memiliki izin infrastruktur. Untuk detail tentang tuntutan keamanan, lihat Permintaan Tautan dan Permintaan Warisan.

Konstruktor

ObjRef()

Menginisialisasi instans ObjRef baru kelas dengan nilai default.

ObjRef(MarshalByRefObject, Type)

Menginisialisasi instans ObjRef baru kelas untuk mereferensikan yang ditentukan MarshalByRefObject dari yang ditentukan Type.

ObjRef(SerializationInfo, StreamingContext)

Menginisialisasi instans ObjRef baru kelas dari data berseri.

Properti

ChannelInfo

Mendapatkan atau mengatur IChannelInfo untuk ObjRef.

EnvoyInfo

Mendapatkan atau mengatur IEnvoyInfo untuk ObjRef.

TypeInfo

Mendapatkan atau mengatur IRemotingTypeInfo untuk objek yang ObjRef dijelaskan.

URI

Mendapatkan atau mengatur URI instans objek tertentu.

Metode

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetObjectData(SerializationInfo, StreamingContext)

Mengisi yang ditentukan SerializationInfo dengan data yang diperlukan untuk membuat serialisasi instans saat ini ObjRef .

GetRealObject(StreamingContext)

Mengembalikan referensi ke objek jarak jauh yang ObjRef dijelaskan.

GetType()

Mendapatkan dari instans Type saat ini.

(Diperoleh dari Object)
IsFromThisAppDomain()

Mengembalikan nilai Boolean yang menunjukkan apakah instans saat ini ObjRef mereferensikan objek yang terletak di saat ini AppDomain.

IsFromThisProcess()

Mengembalikan nilai Boolean yang menunjukkan apakah instans saat ini ObjRef mereferensikan objek yang terletak dalam proses saat ini.

MemberwiseClone()

Membuat salinan dangkal dari saat ini Object.

(Diperoleh dari Object)
ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)

Berlaku untuk

Produk Versi
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

Lihat juga