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) の場合、このパラメータは現在のインスタンスのコピーを返します。
実装
例外
例外の種類 | 条件 |
---|---|
ArgumentException | target が SocketPermission ではありません。 |
解説
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 名前空間