ILogicalThreadAffinative Interface

Définition

Marque un objet pouvant se propager à l'extérieur de AppDomain dans 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
Attributs

Exemples

L’exemple de code suivant illustre l’utilisation de l’interface ILogicalThreadAffinative pour transmettre des objets principal et d’identité à un emplacement distant à des fins d’identification. Pour afficher le code de la HelloServiceClass classe utilisée dans l’exemple, consultez l’exemple de la GetData méthode . Pour afficher le code de la classe de serveur utilisée dans cet exemple, consultez l’exemple pour la RegisterActivatedServiceType classe . Pour afficher le code de la classe cliente utilisée dans l’exemple, consultez l’exemple de la CallContext classe .

[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

Remarques

Lorsqu’un appel de méthode distante est effectué à un objet dans un autre AppDomain, la classe actuelle CallContext génère un LogicalCallContext qui se déplace avec l’appel à l’emplacement distant. Seuls les objets qui exposent l’interface ILogicalThreadAffinative et sont stockés dans sont CallContext propagés en dehors de .AppDomain Les objets qui ne prennent pas en charge cette interface ne sont pas transmis dans LogicalCallContext les instances avec des appels de méthode distante.

S’applique à