CodeAccessPermission.IsSubsetOf(IPermission) Metode

Definisi

Saat diimplementasikan oleh kelas turunan, menentukan apakah izin saat ini adalah subset dari izin yang ditentukan.

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

Parameter

target
IPermission

Izin yang akan diuji untuk hubungan subset. Izin ini harus bertipe sama dengan izin saat ini.

Mengembalikan

true jika izin saat ini adalah subset dari izin yang ditentukan; jika tidak, false.

Penerapan

Pengecualian

Parameter target bukan null dan bukan tipe yang sama dengan izin saat ini.

Contoh

Contoh kode berikut menunjukkan penimpaan IsSubsetOf metode . Contoh kode ini adalah bagian dari contoh yang lebih besar yang disediakan untuk CodeAccessPermission kelas .

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

Keterangan

Izin saat ini adalah subset dari izin yang ditentukan jika izin saat ini menentukan sekumpulan operasi yang sepenuhnya terkandung oleh izin yang ditentukan. Misalnya, izin yang mewakili akses ke C:\example.txt adalah subset izin yang mewakili akses ke C:\. Jika metode ini mengembalikan true, izin saat ini tidak mewakili akses lagi ke sumber daya yang dilindungi daripada izin yang ditentukan.

Pernyataan berikut diperlukan untuk true semua penimpaan IsSubsetOf metode. X, Y, dan Z mewakili objek izin akses kode kustom yang bukan referensi null, U mewakili izin akses kode yang tidak dibatasi, dan N mewakili izin kosong dengan PermissionState dari None.

  • X. IsSubsetOf(X) mengembalikan true.

  • X. IsSubsetOf(Y) mengembalikan nilai yang sama dengan Y. IsSubsetOf(X) jika dan hanya jika X dan Y mewakili set izin yang sama.

  • Jika X. IsSubsetOf(Y) dan Y. IsSubsetOf(Z) keduanya mengembalikan true, X. IsSubsetOf(Z) mengembalikan true.

  • X. IsSubsetOf(U) mengembalikan true.

  • X. IsSubsetOf(N) mengembalikan false.

  • N. IsSubsetOf(X) mengembalikan true.

Jika X dan Y mewakili objek izin akses kode kustom yang merupakan referensi null, X. IsSubsetOf(Y) mengembalikan true. Jika Z juga null, operasi set senyawa X. Union(Y). IsSubsetOf(Z) juga mengembalikan true karena persatuan dua izin null adalah izin null.

Catatan Bagi Implementer

Anda harus mengambil alih metode ini di kelas turunan.

Berlaku untuk

Produk Versi
.NET 8 (package-provided), 9 (package-provided), 10 (package-provided)
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0 (package-provided)
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10