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
.NET Desktop feedback