ResourcePermissionBase Classe

Definizione

Consente il controllo delle autorizzazioni di sicurezza dell'accesso al codice.Allows control of code access security permissions.

public ref class ResourcePermissionBase abstract : System::Security::CodeAccessPermission, System::Security::Permissions::IUnrestrictedPermission
[System.Serializable]
public abstract class ResourcePermissionBase : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
type ResourcePermissionBase = class
    inherit CodeAccessPermission
    interface IUnrestrictedPermission
Public MustInherit Class ResourcePermissionBase
Inherits CodeAccessPermission
Implements IUnrestrictedPermission
Ereditarietà
ResourcePermissionBase
Derivato
Attributi
Implementazioni

Esempi

Nell'esempio seguente viene ereditato dalla classe ResourcePermissionBase.The following example inherits from the ResourcePermissionBase class. sono implementati 4 tipi di costruttori.4 kinds of constructors are implemented. Nell'esempio viene inoltre fornita un'implementazione di una classe denominata MailslotPermissionEntry.The example also provides an implementation of a class called MailslotPermissionEntry. La proprietà PermissionAccessType viene quindi impostata privatamente sul tipo di MailslotPermissionEntry.The PermissionAccessType property is then privately set to the type of MailslotPermissionEntry. La proprietà TagNames è impostata privatamente su "Name" e "Machine".The TagNames property is set privately to "Name" and "Machine".

#using <System.dll>

using namespace System;
using namespace System::Security::Permissions;
using namespace System::Collections;

[Flags]

public enum class MailslotPermissionAccess
{
   None = 0,
   Send = 1 << 1,
   Receive = 1 << 2 | MailslotPermissionAccess::Send
};


[Serializable]
public ref class MailslotPermissionEntry
{
private:
   String^ name;
   String^ machineName;
   MailslotPermissionAccess permissionAccess;

internal:
   MailslotPermissionEntry( ResourcePermissionBaseEntry^ baseEntry )
   {
      this->permissionAccess = (MailslotPermissionAccess)baseEntry->PermissionAccess;
      this->name = baseEntry->PermissionAccessPath[ 0 ]->ToString();
      this->machineName = baseEntry->PermissionAccessPath[ 1 ]->ToString();
   }

   ResourcePermissionBaseEntry^ GetBaseEntry()
   {
      array<String^>^newStrings = {this->Name,this->MachineName};
      ResourcePermissionBaseEntry^ baseEntry = gcnew ResourcePermissionBaseEntry( (int)(this->PermissionAccess),newStrings );
      return baseEntry;
   }

public:
   MailslotPermissionEntry( MailslotPermissionAccess permissionAccess, String^ name, String^ machineName )
   {
      this->permissionAccess = permissionAccess;
      this->name = name;
      this->machineName = machineName;
   }

   property String^ Name 
   {
      String^ get()
      {
         return this->name;
      }
   }

   property String^ MachineName 
   {
      String^ get()
      {
         return this->machineName;
      }
   }

   property MailslotPermissionAccess PermissionAccess 
   {
      MailslotPermissionAccess get()
      {
         return this->permissionAccess;
      }
   }
};


[Serializable]
public ref class MailslotPermission: public ResourcePermissionBase
{
private:
   ArrayList^ innerCollection;
   void SetNames()
   {
      this->PermissionAccessType = MailslotPermissionAccess::typeid;
      array<String^>^newStrings = {"Name","Machine"};
      this->TagNames = newStrings;
   }


internal:
   void AddPermissionAccess( MailslotPermissionEntry^ entry )
   {
      ResourcePermissionBase::AddPermissionAccess( entry->GetBaseEntry() );
   }

   void Clear()
   {
      ResourcePermissionBase::Clear();
   }

   void RemovePermissionAccess( MailslotPermissionEntry^ entry )
   {
      ResourcePermissionBase::RemovePermissionAccess( entry->GetBaseEntry() );
   }


public:
   MailslotPermission()
   {
      SetNames();
   }

   MailslotPermission( PermissionState state )
      : ResourcePermissionBase( state )
   {
      SetNames();
   }

   MailslotPermission( MailslotPermissionAccess permissionAccess, String^ name, String^ machineName )
   {
      SetNames();
      this->AddPermissionAccess( gcnew MailslotPermissionEntry( permissionAccess,name,machineName ) );
   }

   MailslotPermission( array<MailslotPermissionEntry^>^permissionAccessEntries )
   {
      SetNames();
      if ( permissionAccessEntries == nullptr )
            throw gcnew ArgumentNullException( "permissionAccessEntries" );

      for ( int index = 0; index < permissionAccessEntries->Length; ++index )
         this->AddPermissionAccess( permissionAccessEntries[ index ] );
   }

   property ArrayList^ PermissionEntries 
   {
      ArrayList^ get()
      {
         if ( this->innerCollection == nullptr )
                  this->innerCollection = gcnew ArrayList;

         this->innerCollection->InsertRange( 0, safe_cast<ICollection^>(ResourcePermissionBase::GetPermissionEntries()) );
         return this->innerCollection;
      }
   }
};
using System;        
using System.Security.Permissions;  
using System.Collections;

[Serializable()]
public class MailslotPermission: ResourcePermissionBase
{
 
    private ArrayList innerCollection;

    public MailslotPermission() 
    {
        SetNames();
    }                                                                

    public MailslotPermission(PermissionState state):base(state)
    {
        SetNames();
    }  

    public MailslotPermission(MailslotPermissionAccess permissionAccess, string name, string machineName)
    {
        SetNames();
        this.AddPermissionAccess(new MailslotPermissionEntry(permissionAccess, name, machineName));              
    }

    public MailslotPermission(MailslotPermissionEntry[] permissionAccessEntries) 
    {
        SetNames();
        if (permissionAccessEntries == null)
            throw new ArgumentNullException("permissionAccessEntries");
      
        for (int index = 0; index < permissionAccessEntries.Length; ++index)
            this.AddPermissionAccess(permissionAccessEntries[index]);                          
    }

    public ArrayList PermissionEntries 
    {
        get 
        {
            if (this.innerCollection == null)                     
                this.innerCollection = new ArrayList();
            this.innerCollection.InsertRange(0,base.GetPermissionEntries()); 

            return this.innerCollection;                                                               
        }
    }

    internal void AddPermissionAccess(MailslotPermissionEntry entry) 
    {
        base.AddPermissionAccess(entry.GetBaseEntry());
    }

    internal new void Clear() 
    {
        base.Clear();
    }

    internal void RemovePermissionAccess(MailslotPermissionEntry entry) 
    {
        base.RemovePermissionAccess(entry.GetBaseEntry());
    }

    private void SetNames() 
    {
        this.PermissionAccessType = typeof(MailslotPermissionAccess);
        this.TagNames = new string[]{"Name","Machine"};
    }                                
}

[Flags]         
public enum MailslotPermissionAccess 
{
    None = 0,
    Send = 1 << 1,
    Receive = 1 << 2 | Send,
} 

[Serializable()]     
public class MailslotPermissionEntry 
{
    private string name;
    private string machineName;
    private MailslotPermissionAccess permissionAccess;

    public MailslotPermissionEntry(MailslotPermissionAccess permissionAccess, string name, string machineName) 
    {
        this.permissionAccess = permissionAccess;
        this.name = name;
        this.machineName = machineName;
    }  

    internal MailslotPermissionEntry(ResourcePermissionBaseEntry baseEntry) 
    {
        this.permissionAccess = (MailslotPermissionAccess)baseEntry.PermissionAccess;
        this.name = baseEntry.PermissionAccessPath[0]; 
        this.machineName = baseEntry.PermissionAccessPath[1]; 
    }

    public string Name 
    {
        get 
        {                
            return this.name;                
        }                        
    }

    public string MachineName 
    {
        get 
        {                
            return this.machineName;                
        }                        
    }

    public MailslotPermissionAccess PermissionAccess 
    {
        get 
        {
            return this.permissionAccess;
        }                        
    }      

    internal ResourcePermissionBaseEntry GetBaseEntry() 
    {
        ResourcePermissionBaseEntry baseEntry = new ResourcePermissionBaseEntry((int)this.PermissionAccess, new string[] {this.Name,this.MachineName});            
        return baseEntry;
    }

}
Imports System.Security.Permissions
Imports System.Collections

<Serializable()> Public Class MailslotPermission
    Inherits ResourcePermissionBase

    Private innerCollection As ArrayList


    Public Sub New()
        SetNames()
    End Sub


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


    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


    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

    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


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


    Friend Overloads Sub RemovePermissionAccess(ByVal entry As MailslotPermissionEntry)
        MyBase.RemovePermissionAccess(entry.GetBaseEntry())
    End Sub


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

<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


    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


    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

Commenti

Nota

La classe ResourcePermissionBase Confronta le stringhe utilizzando le regole di ordinamento ordinali e ignora la distinzione tra maiuscole e minuscole delle stringhe confrontate.The ResourcePermissionBase class compares strings using ordinal sort rules and ignores the case of the strings being compared.

Note per gli implementatori

Quando si eredita da ResourcePermissionBase, è necessario fornire almeno tre costruttori, impostare due proprietà e fornire una terza proprietà.When you inherit from ResourcePermissionBase, you must provide at least three constructors, set two properties, and provide a third property. I costruttori obbligatori sono: un costruttore senza parametri, uno che accetta un PermissionState come parametro e il maggior numero necessario che accettano i valori per le proprietà.The required constructors are: a parameterless constructor, one that takes a PermissionState as a parameter, and as many as needed that take values for the properties. Le proprietà che devono essere impostate sono PermissionAccessType e TagNames.The properties that need to be set are PermissionAccessType and TagNames. La terza proprietà necessaria è una che restituisce le voci di autorizzazione.The third property that is needed is one that returns the permission entries. Per un esempio di implementazione di questa classe, vedere PerformanceCounterPermission.For an example of an implementation of this class, see PerformanceCounterPermission. In PerformanceCounterPermissionla proprietà TagNames è impostata privatamente su "Machine" e "Category", la proprietà PermissionAccessType viene impostata privatamente sul tipo di PerformanceCounterPermissionAccesse la proprietà PermissionEntries restituisce le voci di autorizzazione.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.

Costruttori

ResourcePermissionBase()

Inizializza una nuova istanza della classe ResourcePermissionBase.Initializes a new instance of the ResourcePermissionBase class.

ResourcePermissionBase(PermissionState)

Inizializza una nuova istanza della classe ResourcePermissionBase con il livello specificato di accesso alle risorse alla creazione.Initializes a new instance of the ResourcePermissionBase class with the specified level of access to resources at creation.

Campi

Any

Specifica il carattere da utilizzare per rappresentare qualsiasi caratteri jolly.Specifies the character to be used to represent the any wildcard character.

Local

Specifica il carattere da utilizzare per rappresentare un riferimento locale.Specifies the character to be used to represent a local reference.

Proprietà

PermissionAccessType

Ottiene o imposta un valore di enumerazione che descrive i tipi di accesso concessi alla risorsa.Gets or sets an enumeration value that describes the types of access that you are giving the resource.

TagNames

Ottiene o imposta una matrice di stringhe che identifica la risorsa protetta.Gets or sets an array of strings that identify the resource you are protecting.

Metodi

AddPermissionAccess(ResourcePermissionBaseEntry)

Consente di aggiungere una voce di autorizzazione all'autorizzazione.Adds a permission entry to the permission.

Assert()

Dichiara che il codice chiamante può accedere alla risorsa protetta da una richiesta di autorizzazione tramite il codice che chiama il metodo, anche se ai chiamanti più in alto nello stack non è stata concessa l'autorizzazione per accedere alla risorsa.Declares 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. L'uso di Assert() può creare problemi di sicurezza.Using Assert() can create security issues.

(Ereditato da CodeAccessPermission)
Clear()

Viene eliminata l'autorizzazione delle voci di autorizzazione aggiunte.Clears the permission of the added permission entries.

Copy()

Viene creata e restituita una copia identica dell'oggetto autorizzazione corrente.Creates and returns an identical copy of the current permission object.

Demand()

Forza un oggetto SecurityException in fase di esecuzione se tutti i chiamanti in posizioni superiori nello stack di chiamate non hanno l'autorizzazione specificata dall'istanza corrente.Forces a SecurityException at run time if all callers higher in the call stack have not been granted the permission specified by the current instance.

(Ereditato da CodeAccessPermission)
Deny()

Impedisce ai chiamanti in posizione più elevata nello stack di chiamate di usare il codice che chiama questo metodo per accedere alla risorsa specificata dall'istanza corrente.Prevents callers higher in the call stack from using the code that calls this method to access the resource specified by the current instance.

(Ereditato da CodeAccessPermission)
Equals(Object)

Determina se l'oggetto CodeAccessPermission specificato è uguale all'oggetto CodeAccessPermission corrente.Determines whether the specified CodeAccessPermission object is equal to the current CodeAccessPermission.

(Ereditato da CodeAccessPermission)
FromXml(SecurityElement)

Ricostruisce un oggetto di sicurezza con uno stato specificato da una codifica XML.Reconstructs a security object with a specified state from an XML encoding.

GetHashCode()

Ottiene un codice hash per l'oggetto CodeAccessPermission adatto per l'uso in algoritmi di hash e in strutture di dati, come una tabella hash.Gets a hash code for the CodeAccessPermission object that is suitable for use in hashing algorithms and data structures such as a hash table.

(Ereditato da CodeAccessPermission)
GetPermissionEntries()

Restituisce una matrice degli oggetti ResourcePermissionBaseEntry aggiunti all'autorizzazione.Returns an array of the ResourcePermissionBaseEntry objects added to this permission.

GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Ereditato da Object)
Intersect(IPermission)

Viene creato e restituito un oggetto autorizzazione che rappresenta l'intersezione tra l'oggetto autorizzazione corrente e un oggetto autorizzazione di destinazione.Creates and returns a permission object that is the intersection of the current permission object and a target permission object.

IsSubsetOf(IPermission)

Consente di stabilire se l'oggetto autorizzazione corrente è un sottoinsieme dell'autorizzazione specificata.Determines whether the current permission object is a subset of the specified permission.

IsUnrestricted()

Ottiene un valore che indica se l'autorizzazione è senza restrizioni.Gets a value indicating whether the permission is unrestricted.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Ereditato da Object)
PermitOnly()

Impedisce ai chiamanti in posizione più elevata nello stack di chiamate di usare il codice che chiama questo metodo per accedere a tutte le risorse eccetto quella specificata dall'istanza corrente.Prevents 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.

(Ereditato da CodeAccessPermission)
RemovePermissionAccess(ResourcePermissionBaseEntry)

Consente di rimuovere una voce di autorizzazione dall'autorizzazione.Removes a permission entry from the permission.

ToString()

Crea e restituisce una rappresentazione di stringa dell'oggetto autorizzazione corrente.Creates and returns a string representation of the current permission object.

(Ereditato da CodeAccessPermission)
ToXml()

Viene creata e restituita una codifica XML dell'oggetto di sicurezza e del relativo stato corrente.Creates and returns an XML encoding of the security object and its current state.

Union(IPermission)

Consente di creare un oggetto autorizzazione che combina l'autorizzazione corrente e l'oggetto autorizzazione di destinazione.Creates a permission object that combines the current permission object and the target permission object.

Implementazioni dell'interfaccia esplicita

IPermission.Demand() (Ereditato da CodeAccessPermission)
IStackWalk.Assert() (Ereditato da CodeAccessPermission)
IStackWalk.Demand() (Ereditato da CodeAccessPermission)
IStackWalk.Deny() (Ereditato da CodeAccessPermission)
IStackWalk.PermitOnly() (Ereditato da CodeAccessPermission)

Sicurezza

SecurityPermission
per il diritto di controllare le evidenze.for the right to control evidence. Azione di sicurezza: InheritanceDemand.Security action: InheritanceDemand. Enumerazione associata: ControlEvidence.Associated enumeration: ControlEvidence.

Si applica a