ILogicalThreadAffinative Schnittstelle

Definition

Markiert ein Objekt, das außerhalb eines Ins AppDomainLogicalCallContextverteilt werden kann.

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
Attribute

Beispiele

Im folgenden Codebeispiel wird die Verwendung der ILogicalThreadAffinative Schnittstelle zum Übertragen von Prinzipal- und Identitätsobjekten an einen Remotestandort zur Identifizierung veranschaulicht. Informationen zum Anzeigen des Codes für die HelloServiceClass im Beispiel verwendete Klasse finden Sie im Beispiel für die GetData Methode. Informationen zum Anzeigen des Codes für die in diesem Beispiel verwendete Serverklasse finden Sie unter Beispiel für die RegisterActivatedServiceType Klasse. Informationen zum Anzeigen des Codes für die im Beispiel verwendete Clientklasse finden Sie im Beispiel für die CallContext Klasse.

[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

Hinweise

Wenn ein Remotemethodenaufruf an ein Objekt in einer anderen AppDomainausgeführt wird, generiert die aktuelle CallContext Klasse eine LogicalCallContext , die zusammen mit dem Aufruf an den Remotestandort reist. Nur Objekte, die die ILogicalThreadAffinative Schnittstelle verfügbar machen und in der CallContext gespeichert werden, werden außerhalb des AppDomain. Objekte, die diese Schnittstelle nicht unterstützen, werden in LogicalCallContext Instanzen mit Remotemethodenaufrufen nicht übertragen.

Gilt für: