Visão geral sobre o objeto CodeModel para Visual Basic e translation from VPE for Csharp Applications
Talvez você precise examinar a estrutura do seu código em um programaticamenteVisual Basic, Visual C#, ou Visual J# aplicativo. Talvez você gostaria de saber os espaços para nome definidos no seu aplicativo e suas relações de aninhamento.sistema autônomo alternativa, convém criar um documento que lista sistema autônomo classes e seus membros públicos sistema autônomo base para a documentação.
The CodeModel2 for um objeto de extensibilidade Geral que fornece acesso a código em um aplicativo. The CodeModel2 objeto não fornece uma lista textual do código. Em vez disso, ele fornece uma coleção de objetos aninhada que representa os elementos de código.Por exemplo, cada namespace no código é representado por um CodeNamespace objeto. The CodeModel2 objeto associado a um projeto é acessado pela CodeModel propriedade.
The FileCodeModel2 é um objeto de extensibilidade Geral que fornece acesso ao código em um único arquivo de fonte. Cada arquivo de fonte em um aplicativo é representado por um ProjectItem objeto e o FileCodeModel2 objeto associado a um item de projeto é encontrado no FileCodeModel propriedade.
O CodeModel2 e o FileCodeModel2 objetos fornecem um CodeModel2.CodeElements e FileCodeModel.CodeElements propriedade, respectivamente, que é uma coleção de CodeElement2 objetos. Visual Basic, Visual C#, e Visual J# suporte a CodeModel2 e FileCodeModel objetos de maneiras ligeiramente diferentes. Para obter um exemplo de um Visual Basic implementação, consulte Descobrir o código usando o modelo de código (Visual Basic) e Como: Use o objeto CodeModel para analisar o código do Visual Basic. Para obter um exemplo de um Visual C# implementação, consulte Descobrir o código usando o modelo de código (Visual C#) e Como: Criar uma classe translation from VPE for Csharp usando o objeto CodeModel.
Alguns idiomas não implementam o inteiro Visual Studio modelo de código. Os tópicos da Ajuda destaque exceções quando existirem.A maioria das diferenças entre implementações do modelo de código são devido às diferenças funcionais entre os idiomas.Por exemplo, você não pode adicionar funções para CodeNamespace objetos em Visual Basic, Visual C#, ou Visual J# porque somente Visual C++ apresenta definições de função de nível superior.
Os objetos de modelo de código principal são listados na tabela a seguir.clicar nos links para ver a lista de métodos e propriedades para cada objeto.
Type (Tipo) |
Descrição |
---|---|
Representa uma construção de namespace em um arquivo de fonte. |
|
Representa uma estrutura no código-fonte. |
|
Representa uma interface no código-fonte. |
|
Representa uma classe no código-fonte. |
|
Representa uma enumeração no código-fonte. |
|
Define uma construção de variável em um arquivo de fonte. |
|
Representa um delegado no código-fonte. |
|
Representa um elemento de código ou construção em uma arquivo de fonte. |
|
Modelos de um elemento de evento do código. |
|
Define uma construção de propriedade em um arquivo de fonte. |
|
Define um atributo para um elemento de código. |
|
Modela o uso de instruções que importar namespaces. |
|
Representa uma construção de função em um arquivo de fonte. |
|
Define um parâmetro para uma função, propriedade e assim por diante. |
Elementos de código aninhados
Elementos de código em um aplicativo são organizados em uma arquitetura aninhada.Por exemplo, a FileCodeModel2 de um projeto de item pode conter, no seu CodeElements coleção, um elemento de código para um namespace. The CodeNamespace objeto que representa esse espaço para nome pode conter vários elementos de código que classes que representam seus Members propriedade. Cada CodeClass2 elemento, por sua vez, pode conter elementos de código que representam propriedades (CodeProperty2 objeto) e métodos (CodeFunction2 objeto). Os métodos para recuperar aninhados código elementos dependem do tipo de elemento de código e são descritos na próxima seção.
Categorias de elemento de código
The CodeElement2 classe é uma classe base que representa todos os elementos de código em um item de projeto (arquivo de código-fonte). Muitas classes derivam de CodeElement2 para representar as construções em um aplicativo, inclusive namespaces, classes, propriedades, métodos e eventos. Há duas categorias expansivas de elementos de código — aqueles que representam tipos e as que não.
Alguns elementos de código em um aplicativo representam tipos.Esses elementos de código derivam o CodeType objeto bem sistema autônomo o CodeElement2 objeto:
Você pode determinar se uma referência a um CodeElement2 objeto é um desses tipos, usando o IsCodeType propriedade. Para localizar os elementos de código aninhados desses tipos, use o Members propriedade, que retorna um CodeElements coleção. Como: Use o objeto CodeModel para analisar o código do Visual Basic inclui um exemplo localiza todas as classes em um projeto.
Como encontrar elementos de código aninhados em outros tipos de elementos de código depende do tipo do elemento de código aninhados.Por exemplo, como uma propriedade tem apenas um Get e um Set método, o CodeProperty2 tem de objeto associado a uma propriedade Getter e Setter propriedades que retornam CodeFunction2 elementos. A lista a seguir mostra as propriedades que usar para encontrar elementos de código aninhados do código de tipos de elementos.
Type (Tipo) |
Propriedade |
---|---|
CodeFunction |
|
CodeNamespace |
|
CodeProperty |
Elementos de código de referências externas
Seu código pode conter declarações de tipo de tipos definidos no referências de projeto.(As referências de projeto são adicionadas por meio de Adicionar referências caixa de diálogo ou com o References.Add método de extensibilidade.) The Visual Basic sistema de projeto não resolver o CodeTypeRef2 objetos que representam essas referências além dos nomes. Portanto, se você tentar usar qualquer uma das outras propriedades ou métodos do CodeElement2 objeto associado com a referência seja o Namepropriedade, será emitida uma exceção "Não implementado". Essas referências são chamadas sistema autônomo "nome do tipo somente" elementos de código.CodeType os objetos que representam as referências externas têm a InfoLocation conjunto de propriedades como vsCMInfoLocationNone.
Erros do compilador e o objeto CodeModel
Quando você estiver gravando o código que mantém referências a CodeElement2 objetos, você deve estar ciente de que o código de fonte subjacente pode ser alterada enquanto estiver segurando a referência. O elemento de código pode ser excluído, renomeado ou envolvido em um erro do compilador.Quando isso acontece, chamadas para o CodeElement2objeto retornar a mensagem de erro "exceção de HRESULT: 0x80047E2C."
Consulte também
Tarefas
Como: Use o objeto CodeModel para analisar o código do Visual Basic
Solucionando problemas de Visual Basic e Visual translation from VPE for Csharp extensibilidade