次の方法で共有


SocketPermission.Union メソッド

2 つの SocketPermission インスタンス間の論理和集合を返します。

Overrides Public Function Union( _
   ByVal target As IPermission _) As IPermission Implements IPermission.Union
[C#]
public override IPermission Union(IPermissiontarget);
[C++]
public: IPermission* Union(IPermission* target);
[JScript]
public override function Union(
   target : IPermission) : IPermission;

パラメータ

  • target
    現在のインスタンスと組み合わせる SocketPermission インスタンス。

戻り値

2 つの SocketPermission インスタンスの和集合を表す SocketPermission インスタンス。 target が null 参照 (Visual Basic では Nothing) の場合、このパラメータは現在のインスタンスのコピーを返します。

実装

IPermission.Union

例外

例外の種類 条件
ArgumentException targetSocketPermission ではありません。

解説

Union を呼び出すとアクセス許可が作成されます。これは、現在のインスタンスが表す Socket 接続へのすべてのアクセスと、 target が表すアクセスを示します。現在のインスタンスまたは target のアクセス許可を求めていずれかが与えられた要求の場合は、両者の和集合を表すアクセス許可に対しても成功します。このメソッドは、 Union をオーバーライドし、 IPermission インターフェイスをサポートするために実装されます。

使用例

[Visual Basic, C#, C++] Union メソッドを使用して、2 つの既存の SocketPermission インスタンス間の論理和集合を返す例を次に示します。

 
' Creates a SocketPermission restricting access to and from all URIs.
Dim mySocketPermission1 As New SocketPermission(PermissionState.None)

' The socket to which this permission will apply will allow connections from www.contoso.com.
mySocketPermission1.AddPermission(NetworkAccess.Accept, TransportType.Tcp, "www.contoso.com", 11000)

' Creates a SocketPermission which will allow the target Socket to connect with www.southridgevideo.com.
Dim mySocketPermission2 As New SocketPermission(NetworkAccess.Connect, TransportType.Tcp, "www.southridgevideo.com", 11002)

' Creates a SocketPermission from the union of two SocketPermissions.
Dim mySocketPermissionUnion As SocketPermission = CType(mySocketPermission1.Union(mySocketPermission2), SocketPermission)

' Checks to see if the union was successfully created by using the IsSubsetOf method.
If mySocketPermission1.IsSubsetOf(mySocketPermissionUnion) And mySocketPermission2.IsSubsetOf(mySocketPermissionUnion) Then
   Console.WriteLine("This union contains permissions from both mySocketPermission1 and mySocketPermission2")
   
   ' Prints the allowable accept URIs to the console.
   Console.WriteLine("This union accepts connections on :")
   
   Dim myEnumerator As IEnumerator = mySocketPermissionUnion.AcceptList
   While myEnumerator.MoveNext()
      Console.WriteLine(CType(myEnumerator.Current, EndpointPermission).ToString())
   End While
   
   Console.WriteLine("This union establishes connections on : ")
   
   ' Prints the allowable connect URIs to the console.
   Console.WriteLine("This union permits connections to :")
   
   myEnumerator = mySocketPermissionUnion.ConnectList
   While myEnumerator.MoveNext()
      Console.WriteLine(CType(myEnumerator.Current, EndpointPermission).ToString())
   End While
End If 

[C#] 

     // Creates a SocketPermission restricting access to and from all URIs.
     SocketPermission mySocketPermission1 = new SocketPermission(PermissionState.None);

     // The socket to which this permission will apply will allow connections from www.contoso.com.
     mySocketPermission1.AddPermission(NetworkAccess.Accept, TransportType.Tcp, "www.contoso.com", 11000);

     // Creates a SocketPermission which will allow the target Socket to connect with www.southridgevideo.com.
     SocketPermission mySocketPermission2 =
                                new SocketPermission(NetworkAccess.Connect, TransportType.Tcp, "www.southridgevideo.com", 11002);

     // Creates a SocketPermission from the union of two SocketPermissions.
     SocketPermission mySocketPermissionUnion = 
                                (SocketPermission)mySocketPermission1.Union(mySocketPermission2);

     // Checks to see if the union was successfully created by using the IsSubsetOf method.
     if (mySocketPermission1.IsSubsetOf(mySocketPermissionUnion) && 
            mySocketPermission2.IsSubsetOf(mySocketPermissionUnion)){
          Console.WriteLine("This union contains permissions from both mySocketPermission1 and mySocketPermission2"); 

          // Prints the allowable accept URIs to the console.
          Console.WriteLine("This union accepts connections on :");

          IEnumerator myEnumerator = mySocketPermissionUnion.AcceptList;
       while (myEnumerator.MoveNext()) {
               Console.WriteLine(((EndpointPermission)myEnumerator.Current).ToString());
            }      

             // Prints the allowable connect URIs to the console.
          Console.WriteLine("This union permits connections to :");

          myEnumerator = mySocketPermissionUnion.ConnectList;
       while (myEnumerator.MoveNext()) {
               Console.WriteLine(((EndpointPermission)myEnumerator.Current).ToString());
            }      

           }


[C++] 

        // Creates a SocketPermission restricting access to and from all URIs.
        SocketPermission *mySocketPermission1 = new SocketPermission(PermissionState::None);

        // The socket to which this permission will apply will allow connections from www.contoso.com.
        mySocketPermission1->AddPermission(NetworkAccess::Accept, TransportType::Tcp, "www.contoso.com", 11000);

        // Creates a SocketPermission which will allow the target Socket to connect with www.southridgevideo.com.
        SocketPermission *mySocketPermission2 =
            new SocketPermission(NetworkAccess::Connect, TransportType::Tcp, "www.southridgevideo.com", 11002);

        // Creates a SocketPermission from the union of two SocketPermissions.
        SocketPermission *mySocketPermissionUnion = 
            __try_cast<SocketPermission *>(mySocketPermission1->Union(mySocketPermission2));

        // Checks to see if the union was successfully created by using the IsSubsetOf method.
        if (mySocketPermission1->IsSubsetOf(mySocketPermissionUnion) && 
            mySocketPermission2->IsSubsetOf(mySocketPermissionUnion)){
                Console::WriteLine("This union contains permissions from both mySocketPermission1 and mySocketPermission2"); 

                // Prints the allowable accept URIs to the console.
                Console::WriteLine("This union accepts connections on :");

                IEnumerator *myEnumerator = mySocketPermissionUnion->AcceptList;
                while (myEnumerator->MoveNext()) {
                    Console::WriteLine(__try_cast<EndpointPermission *>(myEnumerator->Current)->ToString());
                }      

                // Prints the allowable connect URIs to the console.
                Console::WriteLine("This union permits connections to :");

                myEnumerator = mySocketPermissionUnion->ConnectList;
                while (myEnumerator->MoveNext()) {
                    Console::WriteLine(__try_cast<EndpointPermission *>(myEnumerator->Current)->ToString());
                }      

            }

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, Common Language Infrastructure (CLI) Standard

参照

SocketPermission クラス | SocketPermission メンバ | System.Net 名前空間