Direttiva x:ClassModifier
Modifica il comportamento di compilazione XAML quando viene fornito x:Class
. In particolare, invece di creare un class
parziale con un livello di accesso Public
(impostazione predefinita), il 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 degli attributi XAML
<object x:Class="namespace.classname" x:ClassModifier="NotPublic">
...
</object>
Valori XAML
Valore | Descrizione |
---|---|
NotPublic | La stringa esatta da passare per specificare TypeAttributes.Public e TypeAttributes.NotPublic varia a seconda del linguaggio di programmazione code-behind usato. Vedere la sezione Osservazioni. |
Dipendenze
x:Class deve essere fornito anche sullo 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 x:ClassModifier
nell'utilizzo dei servizi XAML .NET varia in base al linguaggio di programmazione. La stringa da usare dipende dal modo in cui ogni linguaggio implementa il relativo CodeDomProvider e i convertitori di tipi restituiti per definire i significati per TypeAttributes.Public e TypeAttributes.NotPublice 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 di TypeAttributes.Public viene eseguita raramente perché TypeAttributes.Public è già il comportamento predefinito.
Altri valori con restrizioni equivalenti a livello di accesso al codice utente, ad esempio private
in C#, non sono rilevanti per x:ClassModifier
perché i riferimenti alle classi annidate non sono supportati in XAML e pertanto il modificatore TypeAttributes.NotPublic ha lo stesso effetto.
Note sulla sicurezza
Il livello di accesso dichiarato in x:ClassModifier
è ancora soggetto all'interpretazione da parte di particolari framework e delle relative funzionalità. WPF include funzionalità per caricare e creare istanze dei tipi in cui x:ClassModifier
è internal
, se tale classe fa riferimento a 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.
Vedere anche
.NET Desktop feedback