Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

ResourcePermissionBase (Clase)

Permite el control de los permisos de seguridad de acceso del código.

Espacio de nombres:  System.Security.Permissions
Ensamblado:  System (en System.dll)

[SerializableAttribute]
[SecurityPermissionAttribute(SecurityAction.InheritanceDemand, ControlEvidence = true, 
	ControlPolicy = true)]
public abstract class ResourcePermissionBase : CodeAccessPermission, 
	IUnrestrictedPermission

El tipo ResourcePermissionBase expone los siguientes miembros.

  NombreDescripción
Método protegidoResourcePermissionBase()Inicializa una nueva instancia de la clase ResourcePermissionBase.
Método protegidoResourcePermissionBase(PermissionState)Inicializa una nueva instancia de la clase ResourcePermissionBase con el nivel de acceso a los recursos especificado en el momento de la creación.
Arriba

  NombreDescripción
Propiedad protegidaPermissionAccessTypeObtiene o establece un valor de enumeración que describe los tipos de acceso que se está asignando al recurso.
Propiedad protegidaTagNamesObtiene o establece una matriz de cadenas que identifican el recurso que se va a proteger.
Arriba

  NombreDescripción
Método protegidoAddPermissionAccessAgrega una entrada de permiso al permiso.
Método públicoAssertDeclara que el código de llamada puede tener acceso al recurso protegido mediante una petición de permiso a través del código que llama a este método, aunque los llamadores que se encuentran en una posición superior de la pila no dispongan de permiso de acceso al recurso. La utilización de Assert puede crear problemas de seguridad. (Se hereda de CodeAccessPermission).
Método protegidoClearBorra el permiso de las entradas de permiso agregadas.
Método públicoCopyCrea y devuelve una copia idéntica del objeto de permiso actual. (Invalida a CodeAccessPermission.Copy()).
Método públicoDemandFuerza SecurityException en tiempo de ejecución si todos los llamadores situados en la pila de llamadas no disponen del permiso especificado por la instancia actual. (Se hereda de CodeAccessPermission).
Método públicoDeny Obsoleta. Evita que los llamadores situados en la parte superior de la pila de llamadas utilicen el código que llama a este método para obtener acceso al recurso especificado por la instancia actual. (Se hereda de CodeAccessPermission).
Método públicoEqualsDetermina si el objeto CodeAccessPermission especificado es igual al objeto CodeAccessPermission actual. (Se hereda de CodeAccessPermission).
Método protegidoFinalize Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por la recolección de elementos no utilizados. (Se hereda de Object).
Método públicoFromXmlReconstruye un objeto de seguridad con un estado especificado a partir de codificación XML. (Invalida a CodeAccessPermission.FromXml(SecurityElement)).
Método públicoGetHashCodeObtiene un código hash para el objeto CodeAccessPermission que sea compatible con los algoritmos hash y estructuras de datos como las tablas hash. (Se hereda de CodeAccessPermission).
Método protegidoGetPermissionEntriesDevuelve una matriz con los objetos ResourcePermissionBaseEntry agregados a este permiso.
Método públicoGetType Obtiene el Type de la instancia actual. (Se hereda de Object).
Método públicoIntersectCrea y devuelve un objeto de permiso que es la intersección entre el objeto de permiso actual y un objeto de permiso de destino. (Invalida a CodeAccessPermission.Intersect(IPermission)).
Método públicoIsSubsetOfDetermina si el objeto de permiso actual es un subconjunto del permiso especificado. (Invalida a CodeAccessPermission.IsSubsetOf(IPermission)).
Método públicoIsUnrestrictedObtiene un valor que indica si el permiso no tiene restricciones.
Método protegidoMemberwiseClone Crea una copia superficial del Object actual. (Se hereda de Object).
Método públicoPermitOnlyEvita que los llamadores situados en la parte superior de la pila de llamadas utilicen el código que llama a este método para obtener acceso a todos los recursos con la excepción del recurso especificado por la instancia actual. (Se hereda de CodeAccessPermission).
Método protegidoRemovePermissionAccessQuita una entrada de permiso del permiso.
Método públicoToStringCrea y devuelve una cadena que representa el objeto de permiso actual. (Se hereda de CodeAccessPermission).
Método públicoToXmlCrea y devuelve una codificación XML del objeto de seguridad y de su estado actual. (Invalida a CodeAccessPermission.ToXml()).
Método públicoUnionCrea un objeto de permiso que combina el objeto de permiso actual y el objeto de permiso de destino. (Invalida a CodeAccessPermission.Union(IPermission)).
Arriba

  NombreDescripción
Campo públicoMiembro estáticoAnyEspecifica el carácter que se va a utilizar para representar cualquier carácter comodín.
Campo públicoMiembro estáticoLocalEspecifica el carácter que se va a utilizar para representar una referencia local.
Arriba

NotaNota

La clase ResourcePermissionBase compara cadenas utilizando reglas de ordenación ordinales y sin distinguir entre mayúsculas y minúsculas en las cadenas comparadas.

Notas para los herederos

Cuando se hereda de ResourcePermissionBase, es necesario proporcionar al menos tres constructores, establecer dos propiedades y proporcionar una tercera propiedad. Los constructores necesarios son: un constructor predeterminado, uno que acepte un PermissionState como parámetro y tanto como sea necesario para aceptar valores para las propiedades. Las propiedades que es necesario establecer son PermissionAccessType y TagNames. La tercera propiedad necesaria es una que devuelva las entradas de permiso. Para ver un ejemplo de implementación de esta clase, vea PerformanceCounterPermission. En PerformanceCounterPermission, la propiedad TagNames se establece de forma privada en "Machine" y "Category", la propiedad PermissionAccessType se establece de forma privada en el tipo de PerformanceCounterPermissionAccess y la propiedad PermissionEntries devuelve las entradas de permiso.

En el siguiente ejemplo se hereda de la clase ResourcePermissionBase. Se implementan cuatro tipos de constructores. En el ejemplo se incluye asimismo una implementación de una clase denominada MailslotPermissionEntry. Después, se establece de forma privada la propiedad PermissionAccessType en el tipo de MailslotPermissionEntry. La propiedad TagNames se establece de manera privada en "Name" y "Machine".


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;
	}

}


.NET Framework

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft