<Elemento> Subtypes (.NET Native)
Applica i criteri di runtime a tutte le classi ereditate per il tipo contenitore.
Sintassi
<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" />
Attributi ed elementi
Nelle sezioni seguenti vengono descritti gli attributi, gli elementi figlio e gli elementi padre.
Attributi
Attributo | Tipo di attributo | Descrizione |
---|---|---|
Activate |
Reflection | Attributo facoltativo. Controlla l'accesso in fase di esecuzione ai costruttori per abilitare l'attivazione di istanze. |
Browse |
Reflection | Attributo facoltativo. Controlla le query per le informazioni sugli elementi di programma, ma non abilita l'accesso in fase di esecuzione. |
Dynamic |
Reflection | Attributo facoltativo. Controlla l'accesso in fase di esecuzione a tutti i membri dei tipi, inclusi costruttori, metodi, campi, proprietà ed eventi, per abilitare la programmazione dinamica. |
Serialize |
Serializzazione | Attributo facoltativo. Controlla l'accesso in fase di esecuzione a costruttori, campi e proprietà per abilitare la serializzazione e la deserializzazione delle istanze del tipo da parte di librerie quali il serializzatore JSON di Newtonsoft. |
DataContractSerializer |
Serializzazione | Attributo facoltativo. Controlla i criteri per la serializzazione che usano la classe System.Runtime.Serialization.DataContractSerializer. |
DataContractJsonSerializer |
Serializzazione | Attributo facoltativo. Controlla i criteri per la serializzazione JSON che usano la classe System.Runtime.Serialization.Json.DataContractJsonSerializer. |
XmlSerializer |
Serializzazione | Attributo facoltativo. Controlla i criteri per la serializzazione XML che usano la classe System.Xml.Serialization.XmlSerializer. |
MarshalObject |
Interop | Attributo facoltativo. Controlla i criteri per effettuare il marshalling dei tipi di riferimento a Windows Runtime e COM. |
MarshalDelegate |
Interop | Attributo facoltativo. Controlla i criteri per effettuare il marshalling dei tipi delegati come puntatori a funzioni al codice nativo. |
MarshalStructure |
Interop | Attributo facoltativo. Controlla i criteri per il marshalling dei tipi di valore al codice nativo. |
Tutti gli attributi
valore | Descrizione |
---|---|
policy_setting | L'impostazione da applicare a questo tipo di criteri. I valori consentiti sono All , Auto , Excluded , Public , PublicAndInternal , Required Public , Required PublicAndInternal e Required All . Per altre informazioni, vedere Runtime Directive Policy Settings (Impostazioni dei criteri delle direttive di runtime). |
Elementi figlio
Nessuno.
Elementi padre
Elemento | Descrizione |
---|---|
<Tipo> | Applica i criteri di reflection a un tipo e a tutti i membri. |
Osservazioni:
L'elemento <Subtypes>
applica i criteri a tutti i sottotipi del tipo contenitore. Viene usato per applicare criteri diversi ai tipi derivati e alle classi base.
Gli attributi di reflection, serializzazione e interoperabilità sono tutti facoltativi, ma è necessario usarne almeno uno.
Esempio
L'esempio seguente definisce una classe denominata BaseClass
e una sottoclasse denominata Derived1
.
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);
}
}
}
Come mostrato nel seguente codice, il file di direttive di runtime imposta esplicitamente i criteri Dynamic
e Activate
per BaseClass
su Excluded
. Di conseguenza, non è possibile creare un'istanza degli oggetti di tipo BaseClass
dinamicamente o mediante chiamate al costruttore di classi BaseClass
. Tuttavia, l'elemento <Subtypes>
consente di creare un'istanza delle classi derivate da BaseClass
dinamicamente e mediante chiamate ai relativi costruttori di classi.
<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>
Grazie alla direttiva <Subtypes>
, il seguente codice che crea dinamicamente un'istanza Derived1
chiamando il metodo Activator.CreateInstance(Type) viene eseguito correttamente. La variabile di blocco qui è un TextBlock oggetto in un'app UWP vuota.
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;
}
}
}
Vedi anche
- <Elemento> Type
- Informazioni di riferimento sul file di configurazione delle direttive di runtime (rd.xml)
- Elementi direttiva di runtime
- Runtime Directive Policy Settings (Impostazioni dei criteri delle direttive di runtime)