Compartir a través de


x:ClassModifier (Directiva)

Modifica el comportamiento de compilación xaml cuando también se proporciona x:Class. En concreto, en lugar de crear una class parcial que tenga un nivel de acceso de Public (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

Valor Descripción
NotPublic La cadena exacta que se va a pasar para especificar TypeAttributes.Public frente a TypeAttributes.NotPublic varía, según el lenguaje de programación subyacente que use. Vea 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.

Observaciones

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 idioma sus CodeDomProvider y los convertidores de tipos que devuelve para definir los significados de TypeAttributes.Public y TypeAttributes.NotPublic, y si ese idioma distingue mayúsculas de minúsculas.

  • Para C#, la cadena que se va a pasar para designar TypeAttributes.NotPublic es internal.

  • Para .NET de Microsoft Visual Basic, la cadena que se va a pasar para designar TypeAttributes.NotPublic es Friend.

  • Para C++/CLI, no existe ningún destino que admita la compilación de XAML; por lo tanto, 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, especificar TypeAttributes.Public se realiza 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 pertinentes para x:ClassModifier porque no se admiten referencias de clase anidadas en XAML y, por tanto, el modificador TypeAttributes.NotPublic tiene el mismo efecto.

Notas de seguridad

El nivel de acceso declarado en x:ClassModifier sigue estando sujeto a la 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 de WPF a través de una referencia de URI de paquete. Como consecuencia de este caso y posiblemente otros como lo implementan otros marcos, no se basan exclusivamente en x:ClassModifier para bloquear todos los intentos de creación de instancias posibles.

Consulte también