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 třídu použitou HelloServiceClass
v ukázce, podívejte se na příklad metody GetData . Pokud chcete zobrazit kód pro serverovou třídu použitou v této ukázce, podívejte se RegisterActivatedServiceType na příklad pro třídu. Pokud chcete zobrazit kód pro třídu klienta použitou v ukázce, podívejte se na příklad pro CallContext třídu.
[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ž vzdálené volání metody je provedeno objekt v jiném objektu v , AppDomainaktuální CallContext třída vygeneruje 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 AppDomainobjekt . Objekty, které nepodporují toto rozhraní, nejsou přenášeny v LogicalCallContext instancích s voláním vzdálené metody.