ILogicalThreadAffinative Interface

Definitie

Hiermee wordt een object gemarkeerd dat buiten een AppDomain in een LogicalCallContextobject kan worden doorgegeven.

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
Kenmerken

Voorbeelden

In het volgende codevoorbeeld ziet u het gebruik van de interface voor het ILogicalThreadAffinative verzenden van principal- en identiteitsobjecten naar een externe locatie voor identificatie. Zie het voorbeeld voor de GetData methode om de code weer te geven voor de HelloServiceClass klasse die in het voorbeeld wordt gebruikt. Zie het voorbeeld voor de RegisterActivatedServiceType klasse om de code weer te geven voor de serverklasse die in dit voorbeeld wordt gebruikt. Zie het voorbeeld voor de CallContext klasse om de code voor de clientklasse weer te geven die in het voorbeeld wordt gebruikt.

[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

Opmerkingen

Wanneer een aanroep van een externe methode wordt gedaan naar een object in een ander AppDomainobject, genereert de huidige CallContext klasse een LogicalCallContext die samen met de aanroep naar de externe locatie gaat. Alleen objecten die de ILogicalThreadAffinative interface beschikbaar maken en worden opgeslagen in de CallContext interface, worden buiten het AppDomainobject doorgegeven. Objecten die deze interface niet ondersteunen, worden niet verzonden in LogicalCallContext exemplaren met externe methode-aanroepen.

Van toepassing op