Partager via


CodeAttribute2.InfoLocation, propriété

Obtient le modèle de code.

Espace de noms :  EnvDTE80
Assembly :  EnvDTE80 (dans EnvDTE80.dll)

Syntaxe

'Déclaration
ReadOnly Property InfoLocation As vsCMInfoLocation
vsCMInfoLocation InfoLocation { get; }
property vsCMInfoLocation InfoLocation {
    vsCMInfoLocation get ();
}
abstract InfoLocation : vsCMInfoLocation
function get InfoLocation () : vsCMInfoLocation

Valeur de propriété

Type : EnvDTE.vsCMInfoLocation
Valeur de constante vsCMInfoLocation.

Notes

Si la propriété InfoLocation retourne vsCMInfoLocationProject, vous pouvez alors définir des propriétés, obtenir StartPoint, et EndPoint, etc.Si vous passez d'un objet de modèle de code (A) à un autre (B), par exemple d'une fonction à son type ou d'une classe à sa classe de base, il se peut que le type de B soit vsCMInfoLocationExternal si sa définition se trouve dans un autre projet.Cette disposition dépend de l'implémentation du modèle de code, du fait que le projet de l'objet B est implémenté dans le même langage que l'objet A, etc.

Si la propriété InfoLocation retourne vsCMInfoLocationExternal, les informations ne sont disponibles qu'à partir de métadonnées d'une DLL ou de sources figées.Vous pourrez peut-être obtenir StartPoint et EditPoint, mais vous ne pourrez pas modifier le document.Autrement dit, vous ne pouvez pas définir de propriétés ni modifier de texte derrière l'élément de code.

Si InfoLocation retourne vsCMInfoLocationNone, le seul élément disponible est un objet de modèle de code possédant un nom.En outre, selon le contexte du code source, il peut être possible de déterminer si le nom est une classe ou une interface.Dans cette situation, cependant, comme le modèle de code ne peut pas convertir le nom en informations réelles, l'objet est inutile.

[!REMARQUE]

Les valeurs d'éléments de modèle de code, tels que des classes, des structures, des fonctions, des attributs, des délégués, etc., peuvent être non déterminables après certains types de modifications, ce qui signifie qu'il n'est pas certain que leurs valeurs resteront inchangées.Pour plus d'informations, consultez la section Les valeurs d'élément de modèle de code peuvent être modifiées de la rubrique Découverte de code à l'aide du modèle de code (Visual Basic).

Exemples

L'exemple suivant crée un espace de noms et un attribut dans la classe actuelle, et répertorie certaines des propriétés de l'attribut.

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;
}

Sécurité .NET Framework

Voir aussi

Référence

CodeAttribute2 Interface

InfoLocation, surcharge

EnvDTE80, espace de noms

Autres ressources

Comment : compiler et exécuter les exemples de code du modèle objet Automation

Découverte de code à l'aide du modèle de code (Visual Basic)

Découverte de code à l'aide du modèle de code (Visual C#)