Compartilhar via


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