ILogicalThreadAffinative インターフェイス
LogicalCallContext に格納して、 AppDomain の外部に転送できるオブジェクトをマークします。
Public Interface ILogicalThreadAffinative
[C#]
public interface ILogicalThreadAffinative
[C++]
public __gc __interface ILogicalThreadAffinative
[JScript]
public interface ILogicalThreadAffinative
解説
別の AppDomain 内のオブジェクトに対してリモート メソッド呼び出しが実行されると、現在の CallContext クラスが LogicalCallContext を生成し、これが呼び出しと一緒にリモートの該当の場所へ転送されます。 ILogicalThreadAffinative インターフェイスを公開し、 CallContext 内に格納されているオブジェクトだけが、 AppDomain の外部に転送されます。このインターフェイスをサポートしていないオブジェクトは、リモートのメソッド呼び出しで生成される LogicalCallContext インスタンスでは転送されません。
使用例
[Visual Basic, C#, C++] ILogicalThreadAffinative インターフェイスを使用して、識別用の プリンシパル オブジェクトと ID オブジェクト をリモートの場所に転送する方法を次のコード例に示します。この例で使用されている HelloServiceClass クラスのコードを確認するには、 GetData メソッドの例を参照してください。この例で使用されているサーバー クラスのコードを確認するには、 RegisterActivatedServiceType クラスの例を参照してください。この例で使用されているクライアント クラスのコードを確認するには、 CallContext クラスの例を参照してください。
<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 'New
End Class 'LogicalCallContextData
[C#]
[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;
}
}
[C++]
[Serializable]
public __gc class LogicalCallContextData : public ILogicalThreadAffinative
{
int _nAccesses;
IPrincipal* _principal;
public:
__property String* get_numOfAccesses()
{
return String::Format(S"The identity of {0} has been accessed {1} times.",
_principal->Identity->Name,
__box(_nAccesses));
}
public:
__property IPrincipal* get_Principal()
{
_nAccesses ++;
return _principal;
}
public:
LogicalCallContextData(IPrincipal* p)
{
_nAccesses = 0;
_principal = p;
}
};
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
名前空間: System.Runtime.Remoting.Messaging
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
アセンブリ: Mscorlib (Mscorlib.dll 内)