ILogicalThreadAffinative Schnittstelle
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Markiert ein Objekt, das Objekte außerhalb einer AppDomain in einem LogicalCallContext verbreiten 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. Um den Code für die in diesem Beispiel verwendete Serverklasse anzuzeigen, sehen Sie sich das Beispiel für die RegisterActivatedServiceType -Klasse an. 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 einem anderen AppDomainausgeführt wird, generiert die aktuelle CallContext Klasse eine LogicalCallContext , die zusammen mit dem Aufruf an den Remotestandort führt. Nur Objekte, die die ILogicalThreadAffinative -Schnittstelle verfügbar machen und in der gespeichert werden, CallContext werden außerhalb von AppDomainweitergegeben. Objekte, die diese Schnittstelle nicht unterstützen, werden in LogicalCallContext Instanzen nicht mit Remotemethodenaufrufen übertragen.