<Elemen ImpliesType> (.NET Native)

Menerapkan kebijakan ke jenis, jika kebijakan tersebut telah diterapkan ke jenis atau metode yang berisi.

Sintaks

<ImpliesType Name="type_name"
             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
Name Umum Atribut yang diperlukan. Menentukan nama jenis.
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.

Atribut nama

Nilai Deskripsi
type_name Nama jenis. Jika jenis yang diwakili oleh elemen ini <ImpliesType> terletak di namespace yang sama dengan elemen yang berisi <Type> , type_name dapat menyertakan nama jenis tanpa namespace layanannya. Jika tidak, type_name harus menyertakan nama jenis yang sepenuhnya memenuhi syarat.

Semua atribut lainnya

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.
<TypeInstantiation> Menerapkan kebijakan refleksi ke jenis generik yang dibangun dan semua anggotanya.
<Metode> Menerapkan kebijakan refleksi ke metode .

Keterangan

Elemen <ImpliesType> ini terutama ditujukan untuk digunakan oleh pustaka. Ini membahas skenario berikut:

  • Jika rutinitas perlu merefleksikan satu jenis, tentu perlu merefleksikan jenis kedua.

  • Metadata untuk instansiasi tersirat dari jenis kedua jika tidak tersedia, karena analisis statis tidak menunjukkan bahwa itu diperlukan.

Paling umum, kedua jenis tersebut adalah instansiasi generik dengan argumen jenis bersama.

Elemen <ImpliesType> didefinisikan dengan asumsi bahwa kebutuhan untuk refleksi pada jenis yang ditentukan oleh elemen induknya menyiratkan kebutuhan untuk refleksi pada jenis yang ditentukan oleh <ImpliesType> elemen . Misalnya, arahan refleksi berikut berlaku untuk dua jenis, Explicit<T> dan Implicit<T>.

<Type Name="Explicit{ET}">
    <ImpliesType Name="Implicit{ET}" Dynamic="Required Public" />
</Type>

Arahan ini tidak berpengaruh kecuali instansiasi Explicit memiliki pengaturan kebijakan yang ditentukan Dynamic . Misalnya, jika itu masalahnya untuk Explicit<Int32>, Implicit<Int32> dibuat instans dengan anggota publiknya yang berakar, dan metadata mereka dibuat dapat diakses untuk pemrograman dinamis.

Berikut ini adalah contoh dunia nyata yang berlaku untuk setidaknya satu serializer. Direktif menangkap persyaratan yang mencerminkan sesuatu yang ditik sebagai IList<sesuatu> juga melibatkan refleksi pada jenis sesuatu yang> sesuai List< tanpa memerlukan anotasi per aplikasi.

<Type Name="System.Collections.Generic.IList{T}">
   <ImpliesType Name="System.Collections.Generic.List{T}" Serialize="Public" />
</Type>

Elemen <ImpliesType> juga dapat muncul dalam <Method> elemen , karena dalam beberapa kasus membuat instans metode generik menyiratkan refleksi pada instansiasi jenis. Misalnya, bayangkan metode IEnumerable<T> MakeEnumerable<T>(string spelling, T defaultValue) generik yang akan diakses pustaka tertentu secara dinamis bersama dengan jenis dan Array terkaitList<T>. Ini dapat diekspresikan sebagai:

<Type Name="MyType">
    <Method Name="MakeEnumerable{T}" Signature="(System.String, T)" Dynamic="Included">
        <ImpliesType Name="T[]" Dynamic="Public" />
        <ImpliesType Name="System.Collections.Generic.List{T}" Dynamic="Public" />
    </Method>
</Type>

Lihat juga