<Elemen Subjenis> (.NET Native)

Menerapkan kebijakan runtime ke semua kelas yang diwarisi dari jenis yang berisi.

Sintaks

<Subtypes Activate="policy_type"
          Browse="policy_type"
          Dynamic="policy_type"
          Serialize="policy_type"
          DataContractSerializer="policy_setting"
          DataContractJsonSerializer="policy_setting"
          XmlSerializer="policy_setting"
          MarshalObject="policy_setting"
          MarshalDelegate="policy_setting"
          MarshalStructure="policy_setting" />

Atribut dan Elemen

Bagian berikut menjelaskan atribut, elemen turunan, dan elemen induk.

Atribut

Atribut Jenis atribut Deskripsi
Activate Refleksi Atribut opsional. Mengontrol akses runtime ke konstruktor untuk mengaktifkan aktivasi instans.
Browse Refleksi Atribut opsional. Mengontrol kueri untuk informasi tentang elemen program, tetapi tidak mengaktifkan akses runtime apa pun.
Dynamic Refleksi Atribut opsional. Mengontrol akses runtime ke semua anggota jenis, termasuk konstruktor, metode, bidang, properti, dan peristiwa, untuk mengaktifkan pemrograman dinamis.
Serialize Serialisasi Atribut opsional. Mengontrol akses runtime ke konstruktor, bidang, dan properti, untuk memungkinkan instans jenis diserialisasikan dan dideserialisasi oleh pustaka seperti serializer Newtonsoft JSON.
DataContractSerializer Serialisasi Atribut opsional. Mengontrol kebijakan untuk serialisasi yang menggunakan System.Runtime.Serialization.DataContractSerializer kelas .
DataContractJsonSerializer Serialisasi Atribut opsional. Mengontrol kebijakan untuk serialisasi JSON yang menggunakan System.Runtime.Serialization.Json.DataContractJsonSerializer kelas .
XmlSerializer Serialisasi Atribut opsional. Mengontrol kebijakan untuk serialisasi XML yang menggunakan System.Xml.Serialization.XmlSerializer kelas .
MarshalObject Interop Atribut opsional. Mengontrol kebijakan untuk marshaling jenis referensi ke Windows Runtime dan COM.
MarshalDelegate Interop Atribut opsional. Mengontrol kebijakan untuk marshaling jenis delegasi sebagai penunjuk fungsi ke kode asli.
MarshalStructure Interop Atribut opsional. Mengontrol kebijakan untuk marshaling jenis nilai ke kode asli.

Semua atribut

Nilai Deskripsi
policy_setting Pengaturan yang akan diterapkan ke jenis kebijakan ini. Nilai yang mungkin adalah All, , ExcludedAuto, Public, PublicAndInternal, Required Public, Required PublicAndInternal, dan Required All. Untuk informasi selengkapnya, lihat Pengaturan Kebijakan Arahan Runtime.

Elemen Anak

Tidak ada.

Elemen Induk

Elemen Deskripsi
<Jenis> Menerapkan kebijakan refleksi ke jenis dan semua anggotanya.

Keterangan

Elemen menerapkan <Subtypes> kebijakan untuk semua subjenis yang berisi jenisnya. Anda menggunakannya saat ingin menerapkan kebijakan yang berbeda untuk jenis turunan dan kelas dasarnya.

Refleksi, serialisasi, dan atribut interop semuanya opsional, meskipun setidaknya satu harus ada.

Contoh

Contoh berikut mendefinisikan kelas bernama BaseClass dan subkelas bernama Derived1.

namespace Examples.Libraries
{
   public class BaseClass
   {
      public BaseClass()
      { }

      public override string ToString()
      {
          return String.Format("{0} Version  {1}", this.GetType().Name, Version);
      }
      public virtual double Version
      { get { return 1.0; }}
    }

   public class Derived1 : BaseClass
   {
      public Derived1() : base()
      {}

      public override double Version
      { get { return 1.1; }}

      public override string ToString()
      {
         return String.Format("{0} Version {1}", this.GetType().Name, Version);
      }
   }
}

Seperti yang ditunjukkan dalam kode berikut, file arahan runtime secara eksplisit menetapkan Dynamic kebijakan dan Activate untuk BaseClass ke Excluded. Karena itu, objek jenis BaseClass tidak dapat diinstansiasi secara dinamis atau dengan panggilan ke BaseClass konstruktor kelas. Namun, elemen memungkinkan <Subtypes> kelas yang berasal dari BaseClass untuk diinstansiasi secara dinamis dan melalui panggilan ke konstruktor kelas mereka.

<Directives xmlns="http://schemas.microsoft.com/netfx/2013/01/metadata">
  <Application>
   <Assembly Name="*Application*" Dynamic="Required All" />
     <Type Name="Examples.Libraries.BaseClass" Activate ="Excluded" Dynamic="Excluded" >
        <Subtypes Activate="Public" Dynamic ="Public"/>
     </Type>
  </Application>
</Directives>

Karena direktif <Subtypes> , kode berikut yang membuat instans Derived1 secara dinamis dengan memanggil Activator.CreateInstance(Type) metode berhasil dijalankan. Variabel blok di sini adalah TextBlock objek dalam aplikasi UWP kosong.

namespace Examples
{
   using System.Reflection;
   using Examples.Libraries;

   public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();

            Derived1 d1 = new Derived1();
            block.Text += d1.ToString() + Environment.NewLine;

            Type derivedType = typeof(Derived1);
            Object obj = Activator.CreateInstance(derivedType);
            block.Text += obj.GetType().FullName + Environment.NewLine;
        }
    }
}

Lihat juga