Aracılığıyla paylaş


ILogicalThreadAffinative Arabirim

Tanım

içindeki bir nesnesinin AppDomain dışına yayabilen bir LogicalCallContextnesneyi işaretler.

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
Öznitelikler

Örnekler

Aşağıdaki kod örneği, Kimlik ve Sorumlu Nesnelerini tanımlama amacıyla uzak bir konuma iletmek için arabiriminin ILogicalThreadAffinative kullanımını gösterir. Örnekte kullanılan sınıfın HelloServiceClass kodunu görüntülemek için yöntem örneğine GetData bakın. Bu örnekte kullanılan sunucu sınıfının kodunu görüntülemek için sınıf örneğine RegisterActivatedServiceType bakın. Örnekte kullanılan istemci sınıfının kodunu görüntülemek için sınıfın örneğine CallContext bakın.

[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

Açıklamalar

Başka AppDomainbir içindeki bir nesneye uzak yöntem çağrısı yapıldığında, geçerli CallContext sınıf uzak konuma yapılan çağrıyla birlikte hareket eden bir LogicalCallContext oluşturur. Yalnızca arabirimini ILogicalThreadAffinative kullanıma sunan ve içinde CallContext depolanan nesneler dışında AppDomainyayılır. Bu arabirimi desteklemeyen nesneler uzak yöntem çağrıları olan örneklerde LogicalCallContext iletilmez.

Şunlara uygulanır