Bagikan melalui


ILogicalThreadAffinative Antarmuka

Definisi

Menandai objek yang dapat disebarluaskan di luar AppDomain dalam LogicalCallContext.

public interface class ILogicalThreadAffinative
public interface ILogicalThreadAffinative
[System.Runtime.InteropServices.ComVisible(true)]
public interface ILogicalThreadAffinative
type ILogicalThreadAffinative = interface
[<System.Runtime.InteropServices.ComVisible(true)>]
type ILogicalThreadAffinative = interface
Public Interface ILogicalThreadAffinative
Atribut

Contoh

Contoh kode berikut menunjukkan penggunaan ILogicalThreadAffinative antarmuka untuk mengirimkan Objek Utama dan Identitas ke lokasi jarak jauh untuk identifikasi. Untuk melihat kode untuk kelas yang HelloServiceClass digunakan dalam sampel, lihat contoh untuk metode .GetData Untuk melihat kode untuk kelas server yang digunakan dalam sampel ini, lihat contoh untuk RegisterActivatedServiceType kelas . Untuk melihat kode untuk kelas klien yang digunakan dalam sampel, lihat contoh untuk CallContext kelas .

[Serializable]
public ref class LogicalCallContextData: public ILogicalThreadAffinative
{
private:
   int _nAccesses;
   IPrincipal^ _principal;

public:

   property String^ numOfAccesses 
   {
      String^ get()
      {
         return String::Format( "The identity of {0} has been accessed {1} times.", _principal->Identity->Name, _nAccesses );
      }
   }

   property IPrincipal^ Principal 
   {
      IPrincipal^ get()
      {
         _nAccesses++;
         return _principal;
      }
   }

   LogicalCallContextData( IPrincipal^ p )
   {
      _nAccesses = 0;
      _principal = p;
   }

};
[Serializable]
public class LogicalCallContextData : ILogicalThreadAffinative
{
   int _nAccesses;
   IPrincipal _principal;

   public string numOfAccesses {
      get {
         return String.Format("The identity of {0} has been accessed {1} times.",
                              _principal.Identity.Name,
                              _nAccesses);
      }
   }

   public IPrincipal Principal {
      get {
         _nAccesses ++;
         return _principal;
      }
   }

   public LogicalCallContextData(IPrincipal p) {
      _nAccesses = 0;
      _principal = p;
   }
}
<Serializable()> Public Class LogicalCallContextData
   Implements ILogicalThreadAffinative

   Private _nAccesses As Integer
   Private _principal As IPrincipal
   
   
   Public ReadOnly Property numOfAccesses() As String
      Get
         Return [String].Format("The identity of {0} has been accessed {1} times.", _principal.Identity.Name, _nAccesses)
      End Get
   End Property
   
   
   Public ReadOnly Property Principal() As IPrincipal
      Get
         _nAccesses += 1
         Return _principal
      End Get
   End Property
   
   
   Public Sub New(p As IPrincipal)
      _nAccesses = 0
      _principal = p
   End Sub

End Class

Keterangan

Ketika panggilan metode jarak jauh dilakukan ke objek di objek lain AppDomain, kelas saat ini CallContext menghasilkan LogicalCallContext yang melakukan perjalanan bersama dengan panggilan ke lokasi jarak jauh. Hanya objek yang mengekspos ILogicalThreadAffinative antarmuka dan disimpan dalam CallContext yang disebarluaskan di AppDomainluar . Objek yang tidak mendukung antarmuka ini tidak ditransmisikan dalam LogicalCallContext instans dengan panggilan metode jarak jauh.

Berlaku untuk