Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original
Este tópico ainda não foi avaliado como - Avalie este tópico

Classe ResourcePermissionBase

Controle de acesso ao código permite que as permissões de segurança.

Namespace:  System.Security.Permissions
Assembly:  System (em System.dll)
[SerializableAttribute]
[SecurityPermissionAttribute(SecurityAction.InheritanceDemand, ControlEvidence = true, 
	ControlPolicy = true)]
public abstract class ResourcePermissionBase : CodeAccessPermission, 
	IUnrestrictedPermission

O tipo ResourcePermissionBase expõe os membros a seguir.

  NomeDescrição
Método protegidoResourcePermissionBase()Inicializa uma nova instância da classe ResourcePermissionBase.
Método protegidoResourcePermissionBase(PermissionState)Inicializa uma nova instância da ResourcePermissionBase classe com o nível especificado de acesso aos recursos de criação.
Superior
  NomeDescrição
Propriedade protegidaPermissionAccessTypeObtém ou define um valor de enumeração que descreve os tipos de acesso que você está fazendo o recurso.
Propriedade protegidaTagNamesObtém ou define uma matriz de seqüências de caracteres que identificar o recurso que você está protegendo.
Superior
  NomeDescrição
Método protegidoAddPermissionAccessAdiciona uma entrada de permissão para a permissão.
Método públicoAssertDeclara que o código de chamada pode acessar o recurso protegido por uma demanda de permissão através do código que chama esse método, mesmo se os chamadores superiores na pilha não receberam permissão para acessar o recurso. Usando Assert pode criar problemas de segurança. (Herdado de CodeAccessPermission.)
Método protegidoClearLimpa a permissão das entradas de permissão adicional.
Método públicoCopyCria e retorna uma cópia idêntica do objeto de permissão atual. (Substitui CodeAccessPermission.Copy().)
Método públicoDemandForça uma SecurityException em tempo de execução se todos os chamadores superiores na pilha de chamada não foi concedidos a permissão especificada por instância atual. (Herdado de CodeAccessPermission.)
Método públicoDeny Obsoleta. Impede que os chamadores superiores na pilha de chamadas usando o código que chama esse método para acessar o recurso especificado por instância atual. (Herdado de CodeAccessPermission.)
Método públicoEqualsDetermina se o especificado CodeAccessPermission objeto é igual a atual CodeAccessPermission. (Herdado de CodeAccessPermission.)
Método protegidoFinalize Permite que um objeto tente liberar recursos e executar outras operações de limpeza antes que ele seja recuperado pela coleta de lixo. (Herdado de Object.)
Método públicoFromXmlReconstrói um objeto de segurança com um estado especificado de uma codificação de XML. (Substitui CodeAccessPermission.FromXml(SecurityElement).)
Método públicoGetHashCodeObtém um código de hash para o CodeAccessPermission objeto é adequado para uso em hash algoritmos e estruturas de dados como uma tabela de hash. (Herdado de CodeAccessPermission.)
Método protegidoGetPermissionEntriesRetorna uma matriz da ResourcePermissionBaseEntry objetos adicionados a essa permissão.
Método públicoGetType Obtém o Type da instância atual. (Herdado de Object.)
Método públicoIntersectCria e retorna um objeto de permissão que é a interseção do objeto de permissão atual e um objeto de permissão de destino. (Substitui CodeAccessPermission.Intersect(IPermission).)
Método públicoIsSubsetOfDetermina se o objeto de permissão atual é um subconjunto da permissão especificado. (Substitui CodeAccessPermission.IsSubsetOf(IPermission).)
Método públicoIsUnrestrictedObtém um valor indicando se a permissão é irrestrita.
Método protegidoMemberwiseCloneCria uma cópia superficial do Object atual. (Herdado de Object.)
Método públicoPermitOnlyImpede que os chamadores superiores na pilha de chamadas usando o código que chama esse método para acessar todos os recursos, exceto para o recurso especificado por instância atual. (Herdado de CodeAccessPermission.)
Método protegidoRemovePermissionAccessRemove uma entrada de permissão da permissão.
Método públicoToStringCria e retorna uma representação de seqüência de caracteres do objeto de permissão atual. (Herdado de CodeAccessPermission.)
Método públicoToXmlCria e retorna uma codificação XML do objeto de segurança e seu estado atual. (Substitui CodeAccessPermission.ToXml().)
Método públicoUnionCria um objeto de permissão que combina o objeto de permissão atual e o objeto de permissão de destino. (Substitui CodeAccessPermission.Union(IPermission).)
Superior
  NomeDescrição
Campo públicoMembro estáticoAnyEspecifica o caractere a ser usado para representar qualquer caractere curinga.
Campo públicoMembro estáticoLocalEspecifica o caractere a ser usado para representar uma referência local.
Superior
ObservaçãoObservação

O ResourcePermissionBase classe compara seqüências de caracteres usando regras de classificação ordinal e ignora o caso das seqüências de caracteres que estão sendo comparados.

Observações para herdeiros

Quando você herda de ResourcePermissionBase, você deve fornecer pelo menos três construtores, definir duas propriedades e fornecem uma propriedade de terceira. Os construtores necessários são: um construtor padrão, que terá um PermissionState como um parâmetro e tantos quantos necessários que levam os valores para as propriedades. As propriedades que precisam ser definidas são PermissionAccessType e TagNames. A terceira propriedade necessária é aquele que retorna as entradas de permissão. Para obter um exemplo de uma implementação desta classe, consulte PerformanceCounterPermission. Na PerformanceCounterPermission, o TagNames está definida em particular como "Máquina" e "Categoria", o PermissionAccessType propriedade em particular é definida como o tipo de PerformanceCounterPermissionAccesse o PermissionEntries propriedade retorna as entradas de permissão.

O exemplo a seguir herda o ResourcePermissionBase classe. 4 tipos de construtores são implementados. O exemplo também fornece uma implementação de uma classe chamada MailslotPermissionEntry. O PermissionAccessType propriedade em particular, em seguida, é definida para o tipo de MailslotPermissionEntry. O TagNames está definida em particular como "Nome" e "Máquina".


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

Com suporte em: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Com suporte em: 4, 3.5 SP1

Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Função Server Core sem suporte), Windows Server 2008 R2 (Função Server Core com suporte com o SP1 ou posterior, Itanium sem suporte)

O .NET Framework não oferece suporte a todas as versões de cada plataforma. Para obter uma lista das versões com suporte, consulte .Requisitos de sistema do NET Framework.
Quaisquer membros estático (Shared no Visual Basic) públicos deste tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.
Isso foi útil para você?
(1500 caracteres restantes)

Contribuições da comunidade

ADICIONAR
A Microsoft está realizando uma pesquisa online para saber sua opinião sobre o site do MSDN. Se você optar por participar, a pesquisa online lhe será apresentada quando você sair do site do MSDN.

Deseja participar?
© 2013 Microsoft. Todos os direitos reservados.