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 内)

参照

System.Runtime.Remoting.Messaging 名前空間