CodeAccessPermission.IsSubsetOf Method

When implemented by a derived class, determines whether the current permission is a subset of the specified permission.

Namespace:  System.Security
Assembly:  mscorlib (in mscorlib.dll)

Public MustOverride Function IsSubsetOf ( _
	target As IPermission _
) As Boolean


Type: System.Security.IPermission

A permission that is to be tested for the subset relationship. This permission must be of the same type as the current permission.

Return Value

Type: System.Boolean
true if the current permission is a subset of the specified permission; otherwise, false.




The target parameter is not Nothing and is not of the same type as the current permission.

The current permission is a subset of the specified permission if the current permission specifies a set of operations that is wholly contained by the specified permission. For example, a permission that represents access to C:\example.txt is a subset of a permission that represents access to C:\. If this method returns true, the current permission represents no more access to the protected resource than does the specified permission.

The following statements are required to be true for all overrides of the IsSubsetOf method. X, Y, and Z represent custom code access permission objects that are not null references, U represents an unrestricted code access permission, and N represents an empty permission with a PermissionState of None.

  • X.IsSubsetOf(X) returns true.

  • X.IsSubsetOf(Y) returns the same value as Y.IsSubsetOf(X) if and only if X and Y represent the same set of permissions.

  • If X.IsSubsetOf(Y) and Y.IsSubsetOf(Z) both return true, X.IsSubsetOf(Z) returns true.

  • X.IsSubsetOf(U) returns true.

  • X.IsSubsetOf(N) returns false.

  • N.IsSubsetOf(X) returns true.

If X and Y represent custom code access permission objects that are null references, X.IsSubsetOf(Y) returns true. If Z is also null, the compound set operation X.Union(Y).IsSubsetOf(Z) also returns true because the union of two null permissions is a null permission.

Notes to Inheritors

You must override this method in a derived class.

The following code example shows an override of the IsSubsetOf method. This code example is part of a larger example provided for the CodeAccessPermission class.

Public Overrides Function IsSubsetOf(ByVal target As IPermission) As Boolean

#If (Debug) Then

            Console.WriteLine("************* Entering IsSubsetOf *********************")
#End If 
            If target Is Nothing Then
                Console.WriteLine("IsSubsetOf: target == null")
                Return False 
            End If
#If (Debug) Then
            Console.WriteLine(("This is = " + CType(Me, NameIdPermission).Name))
            Console.WriteLine(("Target is " + CType(target, NameIdPermission).m_name))
#End If 
                Dim operand As NameIdPermission = CType(target, NameIdPermission)

                ' The following check for unrestricted permission is only included as an example for 
                ' permissions that allow the unrestricted state. It is of no value for this permission. 
                If True = operand.m_Unrestricted Then 
                    Return True 
                ElseIf True = Me.m_Unrestricted Then 
                    Return False 
                End If 

                If Not (Me.m_name Is Nothing) Then 
                    If operand.m_name Is Nothing Then 
                        Return False 
                    End If 
                    If Me.m_name = "" Then 
                        Return True 
                    End If 
                End If 
                If Me.m_name.Equals(operand.m_name) Then 
                    Return True 
                    ' Check for wild card character '*'. 
                    Dim i As Integer = operand.m_name.LastIndexOf("*")

                    If i > 0 Then 
                        Dim prefix As String = operand.m_name.Substring(0, i)

                        If Me.m_name.StartsWith(prefix) Then 
                            Return True 
                        End If 
                    End If 
                End If 

                Return False 
                Throw New ArgumentException(String.Format("Argument_WrongType", Me.GetType().FullName))
            End Try 
        End Function

.NET Framework

Supported in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
© 2014 Microsoft