<Elemen Properti> (.NET Native)
Menerapkan kebijakan refleksi runtime ke properti.
Sintaks
<Property Name="property_name"
Browse="policy_type"
Dynamic="policy_type"
Serialize="policy_type" />
Atribut dan Elemen
Bagian berikut menjelaskan atribut, elemen turunan, dan elemen induk.
Atribut
Atribut | Jenis atribut | Deskripsi |
---|---|---|
Name |
Umum | Atribut yang diperlukan. Menentukan nama properti. |
Browse |
Refleksi | Atribut opsional. Mengontrol kueri untuk informasi tentang atau menghitung properti tetapi tidak mengaktifkan akses dinamis apa pun pada durasi. |
Dynamic |
Refleksi | Atribut opsional. Mengontrol akses runtime ke properti untuk mengaktifkan pemrograman dinamis. Kebijakan ini memastikan bahwa properti dapat diatur atau diambil secara dinamis pada durasi. |
Serialize |
Serialisasi | Atribut opsional. Mengontrol akses runtime ke properti untuk memungkinkan instans jenis diserialisasikan oleh pustaka seperti serializer Newtonsoft JSON atau yang akan digunakan untuk pengikatan data. |
Atribut nama
Nilai | Deskripsi |
---|---|
method_name | Nama properti. Jenis properti ditentukan oleh elemen Type> atau TypeInstantiation induk<.>< |
Semua atribut lainnya
Nilai | Deskripsi |
---|---|
policy_setting | Pengaturan yang akan diterapkan ke jenis kebijakan ini untuk properti . Nilai yang mungkin adalah Auto , Excluded , Included , dan Required . 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. |
Keterangan
Jika kebijakan properti tidak ditentukan secara eksplisit, kebijakan runtime mewarisi elemen induknya.
Contoh
Contoh berikut menggunakan pantulan untuk membuat instans Book
objek dan menampilkan nilai propertinya. File default.rd.xml asli untuk proyek muncul sebagai berikut:
<Directives xmlns="http://schemas.microsoft.com/netfx/2013/01/metadata">
<Application>
<Namespace Name="LibraryApplications" Browse="Required Public" >
<Type Name="Book" Activate="All" />
</Namespace>
</Application>
</Directives>
File menerapkan nilai ke All
Activate
kebijakan untuk Book
kelas , yang memungkinkan akses ke konstruktor kelas melalui refleksi. Kebijakan Browse
untuk Book
kelas diwarisi dari namespace induknya. Ini diatur ke Required Public
, yang membuat metadata tersedia saat runtime.
Berikut ini adalah kode sumber untuk contoh. Variabel outputBlock
mewakili TextBlock kontrol.
namespace LibraryApplications
{
public sealed class Example
{
public void Execute()
{
TextBlock outputBlock = MainPage.outputBlock;
Type t = typeof(Book);
Object obj = Activator.CreateInstance(t, new Object[] { "A Tale of 2 Cities", "Charles Dickens", "" });
outputBlock.Text += "\n\n\n";
foreach (var p in t.GetRuntimeProperties())
{
outputBlock.Text += String.Format("{0}: {1}\n", p.Name, p.GetValue(obj));
}
}
}
public class Book
{
private string bookTitle = "";
private string bookAuthor = "";
private string bookISBN = "";
public Book(string title, string author, string isbn)
{
bookTitle = title;
bookAuthor = author;
bookISBN = isbn;
}
public string Title
{
get { return bookTitle; }
set { bookTitle = value; }
}
public string Author
{
get { return bookAuthor; }
set { bookTitle = value; }
}
public string ISBN
{
get { return bookISBN; }
}
public override string ToString()
{
return String.Format("{0}, {1}", Author, Title);
}
}
}
public class TextUtilities
{
public static string ConvertNumberToWord(int value)
{
switch (value)
{
case 1:
return "One";
case 2:
return "Two";
case 3:
return "Three";
case 4:
return "Four";
case 5:
return "Five";
case 6:
return "Six";
case 7:
return "Seven";
case 8:
return "Eight";
case 9:
return "Nine";
default:
return value.ToString();
}
}
}
Namun, mengkompilasi dan mengeksekusi contoh ini melempar pengecualian MissingRuntimeArtifactException . Meskipun kami telah membuat metadata untuk jenis yang Book
tersedia, kami gagal membuat implementasi getter properti tersedia secara dinamis. Kita dapat memperbaiki kesalahan ini dengan salah satu dari dua cara:
dengan menentukan
Dynamic
kebijakan untukBook
jenis dalam elemen Type-nya<>.Dengan menambahkan elemen Properti> berlapis< untuk setiap properti yang getter-nya ingin kami panggil, seperti yang dilakukan file default.rd.xml berikut.
<Directives xmlns="http://schemas.microsoft.com/netfx/2013/01/metadata"> <Application> <Namespace Name="LibraryApplications" Browse="Required Public" > <Type Name="Book" Activate="All" > <Property Name="Title" Dynamic="Required" /> <Property Name="Author" Dynamic="Required" /> <Property Name="ISBN" Dynamic="Required" /> </Type> </Namespace> </Application> </Directives>
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