<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 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 Book jenis dalam elemen Jenisnya><.Dynamic

  • Dengan 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>
    

Lihat juga