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

CodeAccessPermission.IsSubsetOf (Método)

Cuando se implementa mediante una clase derivada, determina si el permiso actual es un subconjunto del permiso especificado.

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

public abstract bool IsSubsetOf(
	IPermission target
)

Parámetros

target
Tipo: System.Security.IPermission
Permiso que se va a probar para la relación del subconjunto. Este permiso debe ser del mismo tipo que el permiso actual.

Valor devuelto

Tipo: System.Boolean
true si el permiso actual es un subconjunto del permiso especificado; en caso contrario, false.

Implementaciones

IPermission.IsSubsetOf(IPermission)

ExcepciónCondición
ArgumentException

El parámetro target no es null y tampoco es del mismo tipo que el permiso actual.

El permiso actual es un subconjunto del permiso especificado si el primero especifica un conjunto de operaciones contenidas por completo en el permiso especificado. Por ejemplo, un permiso que represente el acceso a C:\ejemplo.txt será un subconjunto de un permiso que represente el acceso a C:\. Si este método devuelve true, el permiso actual representa el mismo grado de acceso al recurso protegido que el permiso especificado.

Las instrucciones siguientes deben ser true para todos los reemplazos del método IsSubsetOf. X, Y y Z representan objetos de permiso de acceso del código personalizado que no son referencias nulas, U representa un permiso de acceso del código sin restricciones y N representa un permiso vacío con un PermissionState de None.

  • X.IsSubsetOf(X) devuelve true.

  • X.IsSubsetOf(Y) devuelve el mismo valor que Y.IsSubsetOf(X) si y sólo si X e Y representan el mismo conjunto de permisos.

  • Si X.IsSubsetOf(Y) e Y.IsSubsetOf(Z) devuelven true, X.IsSubsetOf(Z) devuelve true.

  • X.IsSubsetOf(U) devuelve true.

  • X.IsSubsetOf(N) devuelve false.

  • N.IsSubsetOf(X) devuelve true.

Si X e Y representan objetos de permiso de acceso del código personalizado que son referencias nulas, X.IsSubsetOf(Y) devuelve true. Si Z también es nulo, la operación de conjunto compuesta X.Union(Y).IsSubsetOf(Z) también devuelve true, porque la unión de dos permisos nulos es un permiso nulo.

Notas para los herederos

El método deberá reemplazarse en una clase derivada.

En el siguiente ejemplo de código se muestra un reemplazo del método IsSubsetOf. Este ejemplo de código forma parte de un ejemplo más extenso referente a la clase CodeAccessPermission.


        public override bool IsSubsetOf(IPermission target)
        {
#if(debug)
            Console.WriteLine ("************* Entering IsSubsetOf *********************");
#endif
            if (target == null)
            {
                Console.WriteLine ("IsSubsetOf: target == null");
                return false;
            }
#if(debug)

            Console.WriteLine ("This is = " + (( NameIdPermission)this).Name);
            Console.WriteLine ("Target is " + (( NameIdPermission)target).m_Name);
#endif
            try
            {
                 NameIdPermission operand = ( NameIdPermission)target;

                // The following check for unrestricted permission is only included as an example for
                // permissions that allow the unrestricted state. It is of no value for this permission.
                if (true == operand.m_Unrestricted)
                {
                    return true;
                }
                else if (true == this.m_Unrestricted)
                {
                    return false;
                }

                if (this.m_Name != null)
                {
                    if (operand.m_Name == null) return false;

                    if (this.m_Name == "") return true;
                }

                if (this.m_Name.Equals (operand.m_Name)) return true;
                else
                {
                    // Check for wild card character '*'.
                    int i = operand.m_Name.LastIndexOf ("*");

                    if (i > 0)
                    {
                        string prefix = operand.m_Name.Substring (0, i);

                        if (this.m_Name.StartsWith (prefix))
                        {
                            return true;
                        }
                    }
                }

                return false;
            }
            catch (InvalidCastException)
            {
                throw new ArgumentException (String.Format ("Argument_WrongType", this.GetType ().FullName));
            }
        }


.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.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft