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
- de directiva x:Class
- Code-Behind y XAML en WPF
- directiva x:FieldModifier
- seguridad de
(WPF) - tipos de migrados de WPF a System.Xaml
.NET Desktop feedback