Bagikan melalui


<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 AllActivate 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 untuk Book 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