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
- x:Diretiva de classe
- Code-Behind e XAML no WPF
- da Diretiva x:FieldModifier
- Segurança (WPF)
- tipos migrados do WPF para o System.Xaml
.NET Desktop feedback