Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wendet eine Laufzeitrichtlinie auf alle vom enthaltenden Typ geerbten Klassen an.
Syntax
<Subtypes Activate="policy_type"
Browse="policy_type"
Dynamic="policy_type"
Serialize="policy_type"
DataContractSerializer="policy_setting"
DataContractJsonSerializer="policy_setting"
XmlSerializer="policy_setting"
MarshalObject="policy_setting"
MarshalDelegate="policy_setting"
MarshalStructure="policy_setting" />
Attribute und Elemente
In den folgenden Abschnitten werden Attribute sowie untergeordnete und übergeordnete Elemente beschrieben.
Attribute
| Attribut | Attributtyp | Beschreibung |
|---|---|---|
Activate |
Reflexion | Optionales Attribut. Steuert den Laufzeitzugriff auf Konstruktoren, um die Aktivierung von Instanzen zu ermöglichen. |
Browse |
Reflexion | Optionales Attribut. Steuert das Abfragen von Informationen über Programmelemente, ermöglicht jedoch keinen Laufzeitzugriff. |
Dynamic |
Reflexion | Optionales Attribut. Steuert den Laufzeitzugriff auf alle Typmember, einschließlich Konstruktoren, Methoden, Felder, Eigenschaften und Ereignisse, um die dynamische Programmierung zu ermöglichen. |
Serialize |
Serialisierung | Optionales Attribut. Steuert den Laufzeitzugriff auf Konstruktoren, Felder und Eigenschaften, um Serialisierung und Deserialisierung von Typinstanzen durch Bibliotheken wie das Newtonsoft JSON-Serialisierungsprogramm zu ermöglichen. |
DataContractSerializer |
Serialisierung | Optionales Attribut. Steuert die Richtlinie für die Serialisierung, die die System.Runtime.Serialization.DataContractSerializer-Klasse verwendet. |
DataContractJsonSerializer |
Serialisierung | Optionales Attribut. Steuert die Richtlinie für die JSON-Serialisierung, die die System.Runtime.Serialization.Json.DataContractJsonSerializer-Klasse verwendet. |
XmlSerializer |
Serialisierung | Optionales Attribut. Steuert die Richtlinie für die XML-Serialisierung, die die System.Xml.Serialization.XmlSerializer-Klasse verwendet. |
MarshalObject |
Interop | Optionales Attribut. Steuert die Richtlinie für das Marshalling von Verweistypen zu Windows-Runtime und COM. |
MarshalDelegate |
Interop | Optionales Attribut. Steuert die Richtlinie für das Marshalling von Delegattypen als Funktionszeiger zu systemeigenem Code. |
MarshalStructure |
Interop | Optionales Attribut. Steuert die Richtlinie für das Marshalling von Werttypen zu systemeigenem Code. |
Alle Attribute
| Wert | Beschreibung |
|---|---|
| policy_setting | Die Einstellung, die auf diesen Richtlinientyp angewendet werden soll. Mögliche Werte sind All, Auto, Excluded, Public, PublicAndInternal, Required Public, Required PublicAndInternal und Required All. Weitere Informationen finden Sie unter Richtlinieneinstellungen für die Laufzeitanweisungen. |
Untergeordnete Elemente
Keine
Übergeordnete Elemente
| Element | Beschreibung |
|---|---|
| <Typ> | Wendet die Reflektionsrichtlinie auf einen Typ und alle seine Member an. |
Hinweise
Das <Subtypes>-Element wendet die Richtlinie auf alle Untertypen des enthaltenden Typs an. Sie verwenden es, wenn Sie verschiedene Richtlinien auf abgeleitete Typen und deren Basisklassen anwenden möchten.
Die Reflektions-, Serialisierungs- und Interop-Attribute sind optional, obwohl mindestens eines vorhanden sein sollte.
Beispiel
Im folgenden Beispiel werden eine Klasse namens BaseClass und eine Unterklasse namens Derived1 definiert.
namespace Examples.Libraries
{
public class BaseClass
{
public BaseClass()
{ }
public override string ToString()
{
return String.Format("{0} Version {1}", this.GetType().Name, Version);
}
public virtual double Version
{ get { return 1.0; }}
}
public class Derived1 : BaseClass
{
public Derived1() : base()
{}
public override double Version
{ get { return 1.1; }}
public override string ToString()
{
return String.Format("{0} Version {1}", this.GetType().Name, Version);
}
}
}
Wie im folgenden Code dargestellt, legt die Laufzeitdirektivendatei die Dynamic- und Activate-Richtlinien für BaseClass explizit auf Excluded fest. Daher können Objekte vom Typ BaseClass nicht dynamisch oder durch Aufrufe des BaseClass-Klassenkonstruktors instanziiert werden. Allerdings lässt das <Subtypes>-Element zu, dass von BaseClass abgeleitete Klassen dynamisch und über Aufrufe von deren Klassenkonstruktoren instanziiert werden.
<Directives xmlns="http://schemas.microsoft.com/netfx/2013/01/metadata">
<Application>
<Assembly Name="*Application*" Dynamic="Required All" />
<Type Name="Examples.Libraries.BaseClass" Activate ="Excluded" Dynamic="Excluded" >
<Subtypes Activate="Public" Dynamic ="Public"/>
</Type>
</Application>
</Directives>
Aufgrund der <Subtypes>-Direktive wird der folgende Code, der eine Derived1-Instanz dynamisch durch Aufrufen der Activator.CreateInstance(Type)-Methode instanziiert, erfolgreich ausgeführt. Die Blockvariable hier ist ein TextBlock Objekt in einer leeren UWP-App.
namespace Examples
{
using System.Reflection;
using Examples.Libraries;
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
Derived1 d1 = new Derived1();
block.Text += d1.ToString() + Environment.NewLine;
Type derivedType = typeof(Derived1);
Object obj = Activator.CreateInstance(derivedType);
block.Text += obj.GetType().FullName + Environment.NewLine;
}
}
}