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