Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Um namespace é uma construção C++ padrão para agrupar tipos que têm funcionalidade relacionada e para evitar colisões de nomes em bibliotecas. O sistema de tipo do Tempo de Execução do Windows requer que todos os tipos públicos do Tempo de Execução do Windows, incluindo aqueles em seu próprio código, sejam declarados em um namespace no escopo do namespace. Os tipos públicos declarados no escopo global ou aninhados dentro de outra classe causarão um erro em tempo de compilação.
Um .winmd ficheiro deve ter o mesmo nome que o espaço raiz tem. Por exemplo, uma classe nomeada A.B.C.MyClass só pode ser instanciada se estiver definida num ficheiro de metadados que seja nomeado A.winmd ou A.B.winmdA.B.C.winmd. O nome do executável não é obrigatório para corresponder ao nome do .winmd ficheiro.
Visibilidade do tipo
Em um namespace, os tipos do Tempo de Execução do Windows — ao contrário dos tipos C++ padrão — têm acessibilidade pública ou privada. Por padrão, a acessibilidade é privada. Apenas um tipo público é visível para metadados e, portanto, é consumível de aplicativos e componentes que podem ser escritos em idiomas diferentes de C++. Em geral, as regras para tipos visíveis são mais restritivas do que as regras para tipos não visíveis porque os tipos visíveis não podem expor conceitos específicos do C++ que não são suportados em linguagens .NET ou JavaScript.
Observação
Os metadados só são consumidos em tempo de execução pelas linguagens .NET e JavaScript. Quando uma aplicação ou componente C++ está a comunicar com outra aplicação ou componente C++ — isto inclui componentes do Windows, todos escritos em C++ — então não é necessário o consumo de metadados em tempo de execução.
Acessibilidade e visibilidade dos membros
Em uma classe, interface ou delegado ref privado, nenhum membro é emitido para metadados, mesmo que eles tenham acessibilidade pública. Nas classes ref públicas, você pode controlar a visibilidade dos membros nos metadados independentemente de sua acessibilidade no código-fonte. Como no C++ padrão, aplique o princípio do menor privilégio; Não torne seus membros visíveis em metadados, a menos que eles absolutamente devam ser.
Use os modificadores de acesso a seguir para controlar a visibilidade dos metadados e a acessibilidade do código-fonte.
| Modificador | Significado | Emitido para metadados? |
|---|---|---|
private |
A acessibilidade padrão. O mesmo significado que no C++ padrão. | Não |
protected |
O mesmo significado que no C++ padrão, tanto no aplicativo ou componente quanto nos metadados. | Yes |
public |
O mesmo significado que no C++ padrão. | Yes |
public protected -ou- protected public |
Acessibilidade protegida em metadados, pública dentro do aplicativo ou componente. | Yes |
protected private ou private protected |
Não visível nos metadados; Acessibilidade protegida dentro do aplicativo ou componente. | |
internal ou private public |
O membro é público dentro do aplicativo ou componente, mas não é visível nos metadados. | Não |
Namespaces do Tempo de Execução do Windows
A API do Windows consiste em tipos que são declarados nos Windows::* namespaces. Esses namespaces são reservados para Windows e os tipos não podem ser adicionados a eles.
No Object Browser, pode visualizar estes namespaces no windows.winmd ficheiro. Para obter documentação sobre esses namespaces, consulte API do Windows.
Namespaces C++/CX
O C++/CX define certos tipos nesses namespaces como parte da projeção do sistema de tipos do Tempo de Execução do Windows.
| Namespace | Descrição |
|---|---|
| predefinição | Contém os tipos numéricos e char16 internos. Esses tipos estão no escopo em cada namespace e uma using instrução nunca é necessária. |
Platform |
Contém principalmente tipos públicos que correspondem aos tipos do Tempo de Execução do Windows, como Array<T>, String, Guide Boolean. Também inclui tipos auxiliares especializados, como Platform::Agile<T> e Platform::Box<T>. |
Platform::Collections |
Contém as classes de coleção concretas que implementam as interfaces IVectorde coleção do Tempo de Execução do Windows, IMape assim por diante. Estes tipos são definidos num ficheiro de cabeçalho, collection.h, e não em platform.winmd. |
Platform::Details |
Contém tipos que são usados pelo compilador e não se destinam ao consumo público. |