<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 , , Excluded Auto , 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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk