A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://docs.microsoft.com/en-us/windows/uwp/dotnet-native/property-element-net-native below:

<Property> Element (.NET Native) - UWP applications

Applies runtime reflection policy to a property.

Syntax
<Property Name="property_name"
          Browse="policy_type"
          Dynamic="policy_type"
          Serialize="policy_type" />
Attributes and Elements

The following sections describe attributes, child elements, and parent elements.

Attributes Attribute Attribute type Description Name General Required attribute. Specifies the property name. Browse Reflection Optional attribute. Controls querying for information about or enumerating the property but does not enable any dynamic access at run time. Dynamic Reflection Optional attribute. Controls runtime access to the property to enable dynamic programming. This policy ensures that a property can be set or retrieved dynamically at run time. Serialize Serialization Optional attribute. Controls runtime access to a property to enable type instances to be serialized by libraries such as the Newtonsoft JSON serializer or to be used for data binding. Name attribute Value Description method_name The property name. The type of the property is defined by the parent <Type> or <TypeInstantiation> element. All other attributes Value Description policy_setting The setting to apply to this policy type for the property. Possible values are Auto, Excluded, Included, and Required. For more information, see Runtime Directive Policy Settings. Child Elements

None.

Parent Elements Element Description <Type> Applies reflection policy to a type and all its members. <TypeInstantiation> Applies reflection policy to a constructed generic type and all its members.

If a property's policy is not explicitly defined, it inherits the runtime policy of its parent element.

Example

The following example uses reflection to instantiate a Book object and display its property values. The original default.rd.xml file for the project appears as follows:

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

The file applies the All value to the Activate policy for the Book class, which allows access to class constructors through reflection. The Browse policy for the Book class is inherited from its parent namespace. This is set to Required Public, which makes metadata available at runtime.

The following is the source code for the example. The outputBlock variable represents a TextBlock control.

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();
      }
   }
}

However, compiling and executing this example throws a MissingRuntimeArtifactException exception. Although we've made metadata for the Book type available, we've failed to make the implementations of the property getters available dynamically. We can correct this error by either in one of two ways:

See also

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4