ILogicalThreadAffinative Interface
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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.