Export (0) Print
Expand All

ResourcePermissionBase Class

Allows control of code access security permissions.

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

<SerializableAttribute> _
<SecurityPermissionAttribute(SecurityAction.InheritanceDemand, ControlEvidence := True,  _
	ControlPolicy := True)> _
Public MustInherit Class ResourcePermissionBase _
	Inherits CodeAccessPermission _
	Implements IUnrestrictedPermission

The ResourcePermissionBase type exposes the following members.

Protected methodResourcePermissionBaseInitializes a new instance of the ResourcePermissionBase class.
Protected methodResourcePermissionBase(PermissionState)Initializes a new instance of the ResourcePermissionBase class with the specified level of access to resources at creation.

Protected propertyPermissionAccessTypeGets or sets an enumeration value that describes the types of access that you are giving the resource.
Protected propertyTagNamesGets or sets an array of strings that identify the resource you are protecting.

Protected methodAddPermissionAccessAdds a permission entry to the permission.
Public methodAssertDeclares that the calling code can access the resource protected by a permission demand through the code that calls this method, even if callers higher in the stack have not been granted permission to access the resource. Using Assert can create security issues. (Inherited from CodeAccessPermission.)
Protected methodClearClears the permission of the added permission entries.
Public methodCopyCreates and returns an identical copy of the current permission object. (Overrides CodeAccessPermission.Copy.)
Public methodDemandForces a SecurityException at run time if all callers higher in the call stack have not been granted the permission specified by the current instance. (Inherited from CodeAccessPermission.)
Public methodDeny Obsolete. Prevents callers higher in the call stack from using the code that calls this method to access the resource specified by the current instance. (Inherited from CodeAccessPermission.)
Public methodEqualsDetermines whether the specified CodeAccessPermission object is equal to the current CodeAccessPermission. (Inherited from CodeAccessPermission.)
Protected methodFinalizeAllows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public methodFromXmlReconstructs a security object with a specified state from an XML encoding. (Overrides CodeAccessPermission.FromXml(SecurityElement).)
Public methodGetHashCodeGets a hash code for the CodeAccessPermission object that is suitable for use in hashing algorithms and data structures such as a hash table. (Inherited from CodeAccessPermission.)
Protected methodGetPermissionEntriesReturns an array of the ResourcePermissionBaseEntry objects added to this permission.
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Public methodIntersectCreates and returns a permission object that is the intersection of the current permission object and a target permission object. (Overrides CodeAccessPermission.Intersect(IPermission).)
Public methodIsSubsetOfDetermines whether the current permission object is a subset of the specified permission. (Overrides CodeAccessPermission.IsSubsetOf(IPermission).)
Public methodIsUnrestrictedGets a value indicating whether the permission is unrestricted.
Protected methodMemberwiseCloneCreates a shallow copy of the current Object. (Inherited from Object.)
Public methodPermitOnlyPrevents callers higher in the call stack from using the code that calls this method to access all resources except for the resource specified by the current instance. (Inherited from CodeAccessPermission.)
Protected methodRemovePermissionAccessRemoves a permission entry from the permission.
Public methodToStringCreates and returns a string representation of the current permission object. (Inherited from CodeAccessPermission.)
Public methodToXmlCreates and returns an XML encoding of the security object and its current state. (Overrides CodeAccessPermission.ToXml.)
Public methodUnionCreates a permission object that combines the current permission object and the target permission object. (Overrides CodeAccessPermission.Union(IPermission).)

Public fieldStatic memberAnySpecifies the character to be used to represent the any wildcard character.
Public fieldStatic memberLocalSpecifies the character to be used to represent a local reference.


The ResourcePermissionBase class compares strings using ordinal sort rules and ignores the case of the strings being compared.

Notes to Inheritors

When you inherit from ResourcePermissionBase, you must provide at least three constructors, set two properties, and provide a third property. The required constructors are: a default constructor, one that takes a PermissionState as a parameter, and as many as needed that take values for the properties. The properties that need to be set are PermissionAccessType and TagNames. The third property that is needed is one that returns the permission entries. For an example of an implementation of this class, see PerformanceCounterPermission. In PerformanceCounterPermission, the TagNames property is set privately to "Machine" and "Category", the PermissionAccessType property is privately set to the type of PerformanceCounterPermissionAccess, and the PermissionEntries property returns the permission entries.

The following example inherits from the ResourcePermissionBase class. 4 kinds of constructors are implemented. The example also provides an implementation of a class called MailslotPermissionEntry. The PermissionAccessType property is then privately set to the type of MailslotPermissionEntry. The TagNames property is set privately to "Name" and "Machine".

Imports System
Imports System.Security.Permissions
Imports System.Collections

<Serializable()> Public Class MailslotPermission
    Inherits ResourcePermissionBase

    Private innerCollection As ArrayList

    Public Sub New()
    End Sub 'New 

    Public Sub New(ByVal state As PermissionState)
    End Sub 'New 

    Public Sub New(ByVal permissionAccess As MailslotPermissionAccess, ByVal name As String, ByVal machineName1 As String)
        Me.AddPermissionAccess(New MailslotPermissionEntry(permissionAccess, name, machineName1))
    End Sub 'New 

    Public Sub New(ByVal permissionAccessEntries() As MailslotPermissionEntry)
        If permissionAccessEntries Is Nothing Then 
            Throw New ArgumentNullException("permissionAccessEntries")
        End If 
        Dim index As Integer 

        While index < permissionAccessEntries.Length
        End While 
    End Sub 'New  

    Public ReadOnly Property PermissionEntries() As ArrayList
            If Me.innerCollection Is Nothing Then 
                Me.innerCollection = New ArrayList()
            End If 
            Me.innerCollection.InsertRange(0, MyBase.GetPermissionEntries())

            Return Me.innerCollection
        End Get 
    End Property 

    Friend Overloads Sub AddPermissionAccess(ByVal entry As MailslotPermissionEntry)
    End Sub 'AddPermissionAccess

    Friend Shadows Sub Clear()
    End Sub 'Clear

    Friend Overloads Sub RemovePermissionAccess(ByVal entry As MailslotPermissionEntry)
    End Sub 'RemovePermissionAccess

    Private Sub SetNames()
        Me.PermissionAccessType = GetType(MailslotPermissionAccess)
        Me.TagNames = New String() {"Name", "Machine"}
    End Sub 'SetNames
End Class 'MailslotPermission

<Flags()> Public Enum MailslotPermissionAccess
    None = 0
    Send = 2
    Receive = 4 Or Send
End Enum 'MailslotPermissionAccess

<Serializable()> Public Class MailslotPermissionEntry
    Private nameVar As String 
    Private machineNameVar As String 
    Private permissionAccessVar As MailslotPermissionAccess

    Public Sub New(ByVal permissionAccess As MailslotPermissionAccess, ByVal name As String, ByVal machineName1 As String)
        Me.permissionAccessVar = permissionAccess
        Me.nameVar = name
        Me.machineNameVar = machineName1
    End Sub 'New 

    Friend Sub New(ByVal baseEntry As ResourcePermissionBaseEntry)
        Me.permissionAccessVar = CType(baseEntry.PermissionAccess, MailslotPermissionAccess)
        Me.nameVar = baseEntry.PermissionAccessPath(0)
        Me.machineNameVar = baseEntry.PermissionAccessPath(1)
    End Sub 'New 

    Public ReadOnly Property Name() As String 
            Return Me.nameVar
        End Get 
    End Property 

    Public ReadOnly Property MachineName() As String 
            Return Me.machineNameVar
        End Get 
    End Property 

    Public ReadOnly Property PermissionAccess() As MailslotPermissionAccess
            Return Me.permissionAccessVar
        End Get 
    End Property 

    Friend Function GetBaseEntry() As ResourcePermissionBaseEntry
        Dim baseEntry As New ResourcePermissionBaseEntry(CInt(Me.PermissionAccess), New String() {Me.Name, Me.MachineName})
        Return baseEntry
    End Function 'GetBaseEntry

End Class 'MailslotPermissionEntry

.NET Framework

Supported in: 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.

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
© 2014 Microsoft