Direttiva x:ClassModifier
Modifica il comportamento della compilazione XAML nei casi in cui viene fornito anche x:Class. In particolare, anziché creare una class parziale con un livello di accesso Public (impostazione predefinita), l'oggetto x:Class fornito viene creato con un livello di accesso NotPublic. Questo comportamento influisce sul livello di accesso per la classe negli assembly generati.
Utilizzo della sintassi XAML per gli attributi
<object x:Class="namespace.classname" x:ClassModifier="NotPublic">
...
</object>
Valori XAML
NotPublic |
Stringa esatta da passare per specificare la differenza tra TypeAttributes.Public e TypeAttributes.NotPublic in base al linguaggio di programmazione code-behind utilizzato. Vedere la sezione Osservazioni. |
Dipendenze
L'attributo x:Class deve inoltre essere disponibile nello stesso elemento, che deve trovarsi nell'elemento radice di una pagina. Per ulteriori informazioni, vedere[MS-XAML] Sezione 4.3.1.8.
Note
Il valore di x:ClassModifier nell'utilizzo dei servizi XAML di .NET Framework varia in base al linguaggio di programmazione. La stringa da utilizzare dipende dal modo in cui ciascun linguaggio implementa CodeDomProvider e dai convertitori dei tipi restituiti per definire i significati per TypeAttributes.Public e TypeAttributes.NotPublic, nonché dal rilevamento della distinzione tra maiuscole e minuscole nel linguaggio specifico.
Per C#, la stringa da passare per definire TypeAttributes.NotPublic è internal.
Per Microsoft Visual Basic .NET, la stringa da passare per definire TypeAttributes.NotPublic è Friend.
Per C++/CLI, non sono disponibili destinazioni che supportano la compilazione di XAML, pertanto il valore da passare è non specificato.
È inoltre possibile specificare TypeAttributes.Public (public in C#, Public in Visual Basic); tuttavia, solitamente non si specifica TypeAttributes.Public dal momento che TypeAttributes.Public è già il comportamento predefinito.
Altri valori con restrizioni di accesso al codice a livello di utente equivalenti, come private in C#, non interessano x:ClassModifier, in quanto i riferimenti a classi annidate non sono supportati in XAML e pertanto il modificatore TypeAttributes.NotPublic avrà lo stesso effetto.
Nota sulla sicurezza
Il livello di accesso dichiarato in x:ClassModifier è comunque soggetto a interpretazione da parte di determinati framework e delle relative funzionalità. WPF include funzionalità per caricare e creare un'istanza di tipi dove x:ClassModifier è internal, se a tale classe si fa riferimento da una risorsa WPF tramite un riferimento URI di tipo pack. A seguito di questo caso e possibilmente di altri casi analoghi in cui si è eseguita l'implementazione da parte di altri framework, evitare di basarsi esclusivamente su x:ClassModifier per bloccare tutti i possibili tentativi di creazione di istanze.