This documentation is archived and is not being maintained.

ResourcePermissionBase Class

Allows control of code access security permissions.

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

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

NoteNote:

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()
        SetNames()
    End Sub 'New 


    Public Sub New(ByVal state As PermissionState)
        MyBase.New(state)
        SetNames()
    End Sub 'New 


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


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

        While index < permissionAccessEntries.Length
            Me.AddPermissionAccess(permissionAccessEntries(index))
        End While 
    End Sub 'New  

    Public ReadOnly Property PermissionEntries() As ArrayList
        Get 
            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)
        MyBase.AddPermissionAccess(entry.GetBaseEntry())
    End Sub 'AddPermissionAccess


    Friend Shadows Sub Clear()
        MyBase.Clear()
    End Sub 'Clear


    Friend Overloads Sub RemovePermissionAccess(ByVal entry As MailslotPermissionEntry)
        MyBase.RemovePermissionAccess(entry.GetBaseEntry())
    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 
        Get 
            Return Me.nameVar
        End Get 
    End Property 


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


    Public ReadOnly Property PermissionAccess() As MailslotPermissionAccess
        Get 
            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

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

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

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

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0
Show: