x:ClassModifier (Directiva)
Modifica el comportamiento de compilación de XAML si se proporciona también x:Class. En concreto, en lugar de crear una class parcial con nivel de acceso Public (valor predeterminado), el objeto 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
NotPublic |
La cadena exacta que se debe pasar para especificar el valor TypeAttributes.Public en lugar de TypeAttributes.NotPublic varía en función del lenguaje de programación subyacente que se utilice. Vea la sección Comentarios. |
Dependencias
x:Class también se debe proporcionar para el mismo elemento, que debe ser el elemento raíz de una página. Para obtener más información, vea [MS-XAML] sección 4.3.1.8.
Comentarios
El valor de x:ClassModifier al usarlo en los servicios XAML de .NET Framework varía en función del lenguaje de programación. La cadena que hay que utilizar depende de cómo implementa cada lenguaje su CodeDomProvider y de los convertidores de tipos que devuelve para definir los significados de TypeAttributes.Public y TypeAttributes.NotPublic, y de si el lenguaje distingue entre mayúsculas y minúsculas.
Para C#, la cadena que se debe pasar para designar TypeAttributes.NotPublic es internal.
Para Microsoft Visual Basic .NET, la cadena que se debe pasar para designar TypeAttributes.NotPublic es Friend.
Para C++/CLI, no existen destinos compatibles con la compilación XAML, por consiguiente, el valor para pasar no está especificado.
También puede especificar TypeAttributes.Public (public en C#, Public en Visual Basic); sin embargo, TypeAttributes.Public no se especifica con frecuencia, porque TypeAttributes.Public ya es el comportamiento predeterminado.
Otros valores con restricciones de nivel de acceso de código de usuario equivalentes, tales como private en C#, no son pertinentes para x:ClassModifier, porque las referencias de clase anidadas no se admiten en XAML y, en consecuencia, el modificador TypeAttributes.NotPublic tiene el mismo efecto.
Notas de seguridad
El nivel de acceso tal y como se declara en x:ClassModifier todavía está sujeto a la interpretación por marcos determinados y sus capacidades. WPF incluye las funciones para cargar y crear instancias de los tipos donde x:ClassModifier es internal, si se hace referencia a esa clase desde un recurso WPF a través de una referencia al indicador pack URI. Como consecuencia de este caso y posiblemente otros casos como él, no confíe exclusivamente en x:ClassModifier para bloquear todos los intentos posibles de creación de instancias.
Vea también
Referencia
Conceptos
Código subyacente y XAML en WPF