Direttiva x:ClassModifier

Modifica il comportamento di compilazione XAML quando x:Class viene fornito anche . In particolare, invece di creare un class parziale con un Public livello di accesso (impostazione predefinita), l'oggetto fornito x:Class viene creato con un NotPublic livello di accesso. Questo comportamento influisce sul livello di accesso per la classe negli assembly generati.

Uso della sintassi XAML per gli attributi

<object x:Class="namespace.classname" x:ClassModifier="NotPublic">
   ...
</object>

Valori XAML

Valore Descrizione
NotPublic La stringa esatta da passare per specificare TypeAttributes.Public o TypeAttributes.NotPublic varia a seconda del linguaggio di programmazione code-behind usato. Vedere la sezione Osservazioni.

Dipendenze

X:Class deve anche essere specificato nello stesso elemento e tale elemento deve essere l'elemento radice in una pagina. Per altre informazioni, vedere [MS-XAML] Sezione 6.3.1.8.

Osservazioni

Il valore di nell'utilizzo dei servizi XAML .NET varia in base al linguaggio di x:ClassModifier programmazione. La stringa da usare dipende dal modo in cui ogni linguaggio implementa CodeDomProvider e i convertitori di tipi restituiti per definire i significati per TypeAttributes.Public e TypeAttributes.NotPublice e se tale linguaggio fa distinzione tra maiuscole e minuscole.

  • Per C#, la stringa da passare per designare TypeAttributes.NotPublic è internal.

  • Per Microsoft Visual Basic .NET, la stringa da passare per designare TypeAttributes.NotPublic è Friend.

  • Per C++/CLI, non esistono destinazioni che supportano la compilazione di XAML; pertanto, il valore da passare non è specificato.

È anche possibile specificare TypeAttributes.Public (public in C#, Public in Visual Basic). Tuttavia, la specifica viene TypeAttributes.Public eseguita raramente perché TypeAttributes.Public è già il comportamento predefinito.

Gli altri valori con restrizioni equivalenti a livello di accesso al codice utente, ad esempio private in C#, non sono rilevanti perché x:ClassModifier i riferimenti alle classi annidate non sono supportati in XAML e pertanto il TypeAttributes.NotPublic modificatore ha lo stesso effetto.

Note sulla sicurezza

Il livello di accesso dichiarato in x:ClassModifier è ancora soggetto all'interpretazione da parte di framework specifici e delle relative funzionalità. WPF include funzionalità per caricare e creare istanze dei tipi dove x:ClassModifier è internal, se tale classe fa riferimento da una risorsa WPF tramite un riferimento URI pack. Di conseguenza di questo caso e potenzialmente di altri come implementato da altri framework, non basarsi esclusivamente su x:ClassModifier per bloccare tutti i possibili tentativi di creazione di istanze.

Vedi anche