Partilhar via


x:Diretiva 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 para a classe nos assemblies gerados.

Uso de atributos 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. Ver Observações.

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.

Comentários

O valor do x:ClassModifier no uso dos Serviços XAML .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 esse idioma diferencia maiúsculas de minúsculas.

  • Para C#, a cadeia de caracteres a ser passada para designar TypeAttributes.NotPublic é internal.

  • Para o Microsoft Visual Basic .NET, a cadeia de caracteres a ser passada para designar TypeAttributes.NotPublic é Friend.

  • Para C++/CLI, não existem destinos que suportem a compilação de XAML; portanto, o valor a ser passado não é especificado.

Você também pode especificar TypeAttributes.Public (public em C# Public em 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 equivalentes, como private em C#, não são relevantes para x:ClassModifier porque as referências de classe aninhadas não são suportadas em XAML e, portanto, o modificador de TypeAttributes.NotPublic tem o mesmo efeito.

Notas de segurança

O nível de acesso, tal como declarado em x:ClassModifier ainda está sujeito a interpretação por quadros específicos e suas capacidades. O WPF inclui recursos para carregar e instanciar tipos em que x:ClassModifier é internal, se essa classe for referenciada a partir de um recurso do WPF por meio de uma referência de URI de pacote. Como consequência deste caso e potencialmente de outros semelhantes implementados por outras estruturas, não confie exclusivamente em x:ClassModifier para bloquear todas as tentativas de instanciação possíveis.

Ver também