Diretiva x:ClassModifier
Modifica o comportamento de compilação XAML quando x:Class
também é fornecido. Especificamente, em vez de criar um class
parcial que tenha um nível de acesso Public
(o padrão), o x:Class
fornecido é criado com um nível de acesso NotPublic
. Esse comportamento afeta o nível de acesso da classe nos assemblies gerados.
Uso do atributo XAML
<object x:Class="namespace.classname" x:ClassModifier="NotPublic">
...
</object>
Valores XAML
Valor | Descrição |
---|---|
NotPublic | A cadeia de caracteres exata a ser passada para especificar TypeAttributes.Public versus TypeAttributes.NotPublic varia, dependendo da linguagem de programação code-behind que você usa. Consulte Comentários. |
Dependências
x:Class também deve ser fornecido no mesmo elemento e esse elemento deve ser o elemento raiz em uma página. Para obter mais informações, consulte [MS-XAML] Seção 6.3.1.8.
Observações
O valor de x:ClassModifier
no uso dos Serviços XAML do .NET varia de acordo com a linguagem de programação. A cadeia de caracteres a ser usada depende de como cada idioma implementa seu CodeDomProvider e dos conversores de tipo que retorna para definir os significados para TypeAttributes.Public e TypeAttributes.NotPublice se essa linguagem diferencia maiúsculas de minúsculas.
Para C#, a cadeia de caracteres a ser passada para designar TypeAttributes.NotPublic é
internal
.Para o .NET do Microsoft Visual Basic, a cadeia de caracteres a ser passada para designar TypeAttributes.NotPublic é
Friend
.Para C++/CLI, não existem destinos que dão suporte à compilação de XAML; portanto, o valor a ser passado não é especificado.
Você também pode especificar TypeAttributes.Public (public
em C#, Public
no Visual Basic); no entanto, especificar TypeAttributes.Public é feito com pouca frequência porque TypeAttributes.Public já é o comportamento padrão.
Outros valores com restrições de nível de acesso de código de usuário equivalente, como private
em C#, não são relevantes para x:ClassModifier
porque não há suporte para referências de classe aninhadas no XAML e, portanto, o modificador TypeAttributes.NotPublic tem o mesmo efeito.
Notas de segurança
O nível de acesso, conforme declarado em x:ClassModifier
, ainda está sujeito à interpretação por estruturas específicas e suas funcionalidades. O WPF inclui recursos para carregar e instanciar tipos em que x:ClassModifier
é internal
, se essa classe for referenciada de um recurso do WPF por meio de uma referência de URI do pacote. Como consequência desse caso e, potencialmente, outros como ele implementados por outras estruturas, não dependem exclusivamente de x:ClassModifier
para bloquear todas as possíveis tentativas de instanciação.
Consulte também
- de diretiva x:Class
- Code-Behind e XAML no WPF
- diretiva x:FieldModifier
- do WPF (segurança do
) - tipos de migrados do WPF para o System.Xaml
.NET Desktop feedback