Číst v angličtině

Sdílet prostřednictvím


CodeAccessPermission.IsSubsetOf(IPermission) Metoda

Definice

Při implementaci odvozenou třídou určuje, zda je aktuální oprávnění podmnožinou zadaného oprávnění.

C#
public abstract bool IsSubsetOf(System.Security.IPermission target);

Parametry

target
IPermission

Oprávnění, které má být testováno pro vztah podmnožinu. Toto oprávnění musí být stejného typu jako aktuální oprávnění.

Návraty

truepokud je aktuální oprávnění podmnožinou zadaného oprávnění; v opačném případě . false

Implementuje

Výjimky

Parametr target není null a není stejného typu jako aktuální oprávnění.

Příklady

Následující příklad kódu ukazuje přepsání IsSubsetOf metody . Tento příklad kódu je součástí většího příkladu CodeAccessPermission pro třídu .

C#
        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));
            }
        }

Poznámky

Aktuální oprávnění je podmnožinou zadaného oprávnění, pokud aktuální oprávnění určuje sadu operací, která je zcela obsažena v zadaném oprávnění. Například oprávnění, které představuje přístup k C:\example.txt, je podmnožinou oprávnění, která představuje přístup k C:\. Pokud tato metoda vrátí true, aktuální oprávnění nepředstavuje více přístupu k chráněnému prostředku než zadané oprávnění.

Následující příkazy musí být true pro všechna přepsání IsSubsetOf metody . X, Y a Z představují vlastní objekty oprávnění pro přístup kódu, které nejsou odkazy s hodnotou null, U představuje neomezené přístupové oprávnění kódu a N představuje prázdné oprávnění s PermissionState hodnotou None.

  • X. IsSubsetOf(X) vrátí true.

  • X. Funkce IsSubsetOf(Y) vrátí stejnou hodnotu jako Y. IsSubsetOf(X), pouze pokud X a Y představují stejnou sadu oprávnění.

  • Pokud X. IsSubsetOf(Y) a Y. IsSubsetOf(Z) oba vrací true, X. IsSubsetOf(Z) vrátí true.

  • X. IsSubsetOf(U) vrátí true.

  • X. IsSubsetOf(N) vrátí false.

  • N. IsSubsetOf(X) vrátí true.

Pokud X a Y představují vlastní objekty oprávnění pro přístup kódu, které jsou null odkazy, X. IsSubsetOf(Y) vrátí true. Pokud je Z také null, operace složené sady X. Union(Y). IsSubsetOf(Z) také vrátí true , protože sjednocení dvou oprávnění null je null oprávnění.

Poznámky pro implementátory

Tuto metodu je nutné přepsat v odvozené třídě.

Platí pro