x:ClassModifier (Directiva)
Modifica el comportamiento de compilación XAML cuando también se proporciona x:Class
. En concreto, en lugar de crear un class
parcial que tenga un nivel de acceso Public
(el valor predeterminado), el x:Class
proporcionado se crea con un nivel de acceso NotPublic
. Este comportamiento afecta al nivel de acceso de la clase en los ensamblados generados.
Uso de atributos XAML
<object x:Class="namespace.classname" x:ClassModifier="NotPublic">
...
</object>
Valores XAML
Value | Descripción |
---|---|
NotPublic | La cadena exacta que se va a pasar para especificar TypeAttributes.Public frente a TypeAttributes.NotPublic varía en función del lenguaje de programación del código subyacente que use. Vea la sección Comentarios. |
Dependencias
x:Class también debe proporcionarse en el mismo elemento y ese elemento debe ser el elemento raíz de una página. Para obtener más información, vea [MS-XAML] Sección 6.3.1.8.
Comentarios
El valor de x:ClassModifier
en el uso de servicios XAML de .NET varía según el lenguaje de programación. La cadena que se va a usar depende de cómo implementa cada lenguaje su CodeDomProvider y los convertidores de tipos que devuelve para definir los significados de TypeAttributes.Public y TypeAttributes.NotPublic, y de si ese lenguaje distingue mayúsculas de minúsculas.
Para C#, la cadena que se va a pasar para designar TypeAttributes.NotPublic es
internal
.Para Microsoft Visual Basic .NET, la cadena que se va a pasar para designar TypeAttributes.NotPublic es
Friend
.Para C++/CLI, no existen destinos que admitan la compilación de XAML, por lo que el valor que se va a pasar no está especificado.
También puede especificar TypeAttributes.Public (public
en C#, Public
en Visual Basic); sin embargo, TypeAttributes.Public se especifica con poca frecuencia porque TypeAttributes.Public ya es el comportamiento predeterminado.
Otros valores con restricciones de nivel de acceso de código de usuario equivalentes, como private
en C#, no son relevantes para x:ClassModifier
porque las referencias de clase anidadas no se admiten en XAML y, por lo tanto, el modificador TypeAttributes.NotPublic tiene el mismo efecto.
Notas de seguridad
El nivel de acceso declarado en x:ClassModifier
todavía está sujeto a interpretación por marcos concretos y sus funcionalidades. WPF incluye funcionalidades para cargar y crear instancias de tipos en los que x:ClassModifier
es internal
, si se hace referencia a esa clase desde un recurso WPF a través de una referencia de URI de paquete. Como consecuencia de este caso y otros casos potencialmente similares implementados por otros marcos, no debe basarse exclusivamente en x:ClassModifier
para bloquear todos los posibles intentos de creación de instancias.
Vea también
.NET Desktop feedback