Condividi tramite


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.

Vedere anche

Riferimenti

Direttiva x:Class

Direttiva x:FieldModifier

Concetti

Code-behind e XAML in WPF

Sicurezza di WPF

Altre risorse

Tipi migrati da WPF a System.Xaml