Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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 waktu proses. |
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 waktu proses. |
Serialize |
Serialisasi | Atribut opsional. Mengontrol akses runtime ke properti untuk memungkinkan instans jenis diserialisasikan oleh pustaka seperti serializer Newtonsoft JSON atau untuk digunakan untuk pengikatan data. |
Atribut nama
| Nilai | Deskripsi |
|---|---|
| method_name | Nama properti. Jenis properti didefinisikan 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 tersebut mewarisi kebijakan runtime 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 pantulan. Kebijakan Browse untuk Book kelas diwariskan dari namespace induknya. Ini diatur ke Required Public, yang membuat metadata tersedia pada 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 menjalankan contoh ini melempar pengecualian MissingRuntimeArtifactException . Meskipun kami telah membuat metadata untuk jenis yang Book tersedia, kami gagal membuat implementasi getter properti tersedia secara dinamis. Kami dapat memperbaiki kesalahan ini dengan salah satu dari dua cara:
dengan menentukan kebijakan untuk
Bookjenis dalam elemen Jenisnya><.DynamicDengan menambahkan elemen Properti> berlapis <untuk setiap properti yang getternya 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>