Compartilhar via


Propriedade CodeAttribute2.InfoLocation

Obtém o modelo de código.

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

Sintaxe

'Declaração
ReadOnly Property InfoLocation As vsCMInfoLocation
vsCMInfoLocation InfoLocation { get; }
property vsCMInfoLocation InfoLocation {
    vsCMInfoLocation get ();
}
abstract InfoLocation : vsCMInfoLocation
function get InfoLocation () : vsCMInfoLocation

Valor de propriedade

Tipo: EnvDTE.vsCMInfoLocation
A vsCMInfoLocation valor constante.

Comentários

Se a InfoLocation propriedade retornará vsCMInfoLocationProject, e em seguida, você pode definir propriedades, obter um StartPointe obter um EndPoint, e assim por diante.Quando você entrar no objeto de modelo de código de um (A) para outro (B) — por exemplo, de uma função para seu tipo ou de uma classe para sua classe base — B pode ser do tipo vsCMInfoLocationExternal se a sua definição é em outro projeto.A disposição depende a implementação do modelo de código, o objeto se o projeto do b é implementado no mesmo idioma do objeto do e assim por diante.

Se a InfoLocation propriedade retornará vsCMInfoLocationExternal, e em seguida, as informações estão disponíveis somente a partir de metadados em uma DLL ou fontes congeladas.Talvez você possa obter um StartPoint e EditPoint, mas você não pode editar o documento.Em outras palavras, você não pode definir propriedades ou modificar o texto atrás do elemento de código.

Se InfoLocation retorna vsCMInfoLocationNone, e em seguida, tudo o que está disponível é um objeto de modelo de código que tem um nome.Além disso, com base no contexto de código fonte, em alguns casos você pode dizer se o nome deve ser uma classe ou uma interface.Nessa situação, no entanto, porque o modelo de código não foi possível resolver o nome a qualquer informação real, o objeto é contrário inútil.

ObservaçãoObservação

Os valores de elementos de modelo de código, como classes, estruturas, funções, atributos, delegados e assim por diante podem ser não-determinísticos depois de fazer determinados tipos de edições, o que significa que seus valores não confie sempre permanecer o mesmo.Para obter mais informações, consulte a seção valores de elemento de modelo de código podem ser alterada de Descobrindo o código usando o modelo de código (Visual Basic).

Exemplos

O exemplo a seguir cria um novo espaço para nome e o atributo na classe atual e lista algumas das propriedades do atributo.

public void CreateClassAndAttrib(DTE2 applicationObject)
{
    // Before running, load or create a project.
    FileCodeModel2 fcm2 = GetFileCodeModel(applicationObject);
    CodeAttribute2 cmAttribute;
    CodeClass2 cmClass;
    String msg = null;

    if (fcm2 != null)
    {
        CodeNamespace cmNamespace;
        // Try to create a new namespace.
        try
        {
            cmNamespace = fcm2.AddNamespace("CMNamespace", -1);
            // If successful, create the other code elements.
            if (cmNamespace != null)
            {
                cmClass = (CodeClass2)cmNamespace.AddClass("ANewClass", 
                -1, null, null, vsCMAccess.vsCMAccessPrivate);
                cmAttribute = (CodeAttribute2)cmClass.AddAttribute
                ("NewAttribute", "AttributeValue", -1);
                msg += "InfoLocation: " + cmAttribute.InfoLocation + 
                Environment.NewLine;
                msg += "IsCodeType?: " + cmAttribute.IsCodeType + 
                Environment.NewLine;
                msg += "Kind: " + cmAttribute.Kind + 
                Environment.NewLine;
                MessageBox.Show(msg);                       
            }
            else
            {
                MessageBox.Show("Cannot continue - no filecodemodel 
                available.");
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("ERROR: " + ex);
        }
    }
}

public FileCodeModel2 GetFileCodeModel(DTE2 applicationObject)
{
    // Returns the FileCodeModel object of the active 
    // window.
    TextWindow txtWin = 
    (TextWindow)applicationObject.ActiveWindow.Object;
    FileCodeModel2 fcm2;
    if (txtWin != null)
    {
        try
        {
             fcm2 = (FileCodeModel2)txtWin.Parent.
             ProjectItem.FileCodeModel;
             return fcm2;
        }
        catch (Exception ex)
        {
             MessageBox.Show("ERROR: " + ex);
             return null;
        }
    }
    else
        return null;
}

Segurança do .NET Framework

Consulte também

Referência

CodeAttribute2 Interface

Sobrecargas InfoLocation

Namespace EnvDTE80

Outros recursos

Como: compilar e executar os exemplos de código de modelo de objeto de automação

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

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