Compartilhar via


Propriedade CodeElement2.ElementID

Obtém um valor que identifica exclusivamente o elemento. Não implementado no Visual C #.

Namespace:  EnvDTE80
Assembly:  EnvDTE80 (em EnvDTE80.dll)

Sintaxe

'Declaração
ReadOnly Property ElementID As String
string ElementID { get; }
property String^ ElementID {
    String^ get ();
}
abstract ElementID : string with get
function get ElementID () : String

Valor de propriedade

Tipo: String
Uma cadeia de caracteres que representa o valor exclusivo para o elemento.

Comentários

A propriedade de ElementID é um valor que é calculado com base no nome do elemento e outras informações que identifica exclusivamente o elemento. O cálculo exato de ID varia entre idiomas.

Essa ID é usado por clientes do modelo de código para rastrear os elementos sem manter referências. É incluído em eventos de modelo de código para informar o código de cliente do elemento que está alterando. Novas IDs são fornecidos quando são criados.

O valor da propriedade de ElementID não deve ser considerado permanente. É provável ser alterada sempre que o modelo de código é criado para um projeto e também pode alterar na sessão atual. Um evento de ElementChanged ocorre sempre que ElementID é alterado.

Dica

Você não pode chamar RenameSymbol ou o latebound de ElementID . (Por exemplo, DTE.ActiveDocument.ProjectItem.FileCodeModel.CodeElements.Item("Class1").RenameSymbol("Class2").) É necessário converter explicitamente o objeto para a interface de CodeElement2 antes de fazer a chamada.

Os elementos de código em EnvDTE80 (chamado assim por diante objetos Code*2) derivam-se dessas propriedades em EnvDTE. (Por exemplo, se CodeClass2 deriva de CodeClass, e CodeElement2 é derivado de CodeElement.) Internamente em Visual Studio, todos os elementos de código (em ambos os assemblies) por sua vez são convertidos em CodeElement2.Assim, logicamente, é como se CodeClass2, por exemplo, se finalmente deriva de CodeElement2.

Como os dois elementos estão na realidade em duas hierarquias separadas de herança, entretanto, o latebinder não pode verificar métodos de CodeElement2 nos objetos Code*2.o trabalho deEnvDTE essencialmente da mesma maneira, mas o uso de macros do processador permitem que as interfaces está definido de modo que os métodos herdados são definidos explicitamente em todas as interfaces relacionadas para que as conversões existentes.as interfaces deEnvDTE80 são definidas usando um esquema semelhante de herança, somente sem o uso de instruções do processador.Essa é uma solução mais elegante desde que elimina propriedades redundantes, mas o resultado é que essas propriedades não podem ser chamadas latebound.Para resolver esse problema, convertido explicitamente o objeto para a interface de CodeElement2 antes de fazer a chamada.

Além disso, os valores de código de modelagem elementos como classes, estruturas, funções, atributos, representantes, e assim por diante podem ser não determinísticas depois de fazer determinados tipos as edições do, o que significa que seus valores não podem ser confiáveis em para permanecer sempre os mesmos.Para obter mais informações, veja que os valores do elemento do modelo de código da seção podem ser alteradas em Descobrindo código usando o modelo de código (Visual Basic).

Segurança do .NET Framework

Consulte também

Referência

CodeElement2 Interface

Namespace EnvDTE80

Outros recursos

Como compilar e executar os exemplos de código do modelo de objeto Automation

Descobrindo código usando o modelo de código (Visual Basic)

Descobrindo código usando o modelo de código (Visual C#)