ILogicalThreadAffinative Rozhraní
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Označí objekt, který se může rozšířit mimo objekt AppDomain v objektu 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
- Atributy
Příklady
Následující příklad kódu ukazuje použití ILogicalThreadAffinative rozhraní k přenosu objektů zabezpečení a identity do vzdáleného umístění pro identifikaci. Pokud chcete zobrazit kód pro HelloServiceClass třídu použitou v ukázce, podívejte se na příklad metody GetData . Pokud chcete zobrazit kód pro třídu serveru použitou v této ukázce, podívejte se na příklad třídy RegisterActivatedServiceType . Pokud chcete zobrazit kód pro třídu klienta použitou v ukázce, podívejte se na příklad třídy CallContext .
[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
Poznámky
Když je volání vzdálené metody provedeno na objekt v jiné AppDomain, aktuální CallContext třída generuje LogicalCallContext , který cestuje spolu s voláním vzdáleného umístění. Pouze objekty, které zpřístupňují ILogicalThreadAffinative rozhraní a jsou uloženy v objektu CallContext se šíří mimo AppDomain. Objekty, které nepodporují toto rozhraní, nejsou přenášeny v LogicalCallContext instancích s voláními vzdálené metody.