Condividi tramite


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