Condividi tramite


Metodo CodeModel2.AddStruct (String, Object, Object, Object, Object, vsCMAccess)

Crea un nuovo costrutto di codice di una struttura e inserisce il codice nella posizione corretta.

Spazio dei nomi:  EnvDTE80
Assembly:  EnvDTE80 (in EnvDTE80.dll)

Sintassi

'Dichiarazione
Function AddStruct ( _
    Name As String, _
    Location As Object, _
    Position As Object, _
    Bases As Object, _
    ImplementedInterfaces As Object, _
    Access As vsCMAccess _
) As CodeStruct
CodeStruct AddStruct(
    string Name,
    Object Location,
    Object Position,
    Object Bases,
    Object ImplementedInterfaces,
    vsCMAccess Access
)
CodeStruct^ AddStruct(
    String^ Name, 
    Object^ Location, 
    Object^ Position, 
    Object^ Bases, 
    Object^ ImplementedInterfaces, 
    vsCMAccess Access
)
abstract AddStruct : 
        Name:string * 
        Location:Object * 
        Position:Object * 
        Bases:Object * 
        ImplementedInterfaces:Object * 
        Access:vsCMAccess -> CodeStruct 
function AddStruct(
    Name : String, 
    Location : Object, 
    Position : Object, 
    Bases : Object, 
    ImplementedInterfaces : Object, 
    Access : vsCMAccess
) : CodeStruct

Parametri

  • Name
    Tipo: System.String
    Obbligatorio.Il nome della nuova struttura.
  • Location
    Tipo: System.Object
    Obbligatorio.Percorso e nome file della definizione della nuova struttura.A seconda del linguaggio, il nome file può essere relativo o assoluto rispetto al file di progetto.Se non ne costituisce già un elemento, il file viene aggiunto al progetto.Se non è possibile creare il file e aggiungerlo al progetto, AddStruct avrà esito negativo.
  • Position
    Tipo: System.Object
    Facoltativo.Valore predefinito = 0.Elemento di codice dopo il quale deve essere aggiunto il nuovo elemento.Se il valore corrisponde a CodeElement, il nuovo elemento verrà aggiunto immediatamente dopo.
    Se il valore è di tipo Long, AddStruct indicherà l'elemento dopo il quale deve essere aggiunto il nuovo elemento.
    Poiché negli insiemi il conteggio inizia da 1, il valore 0 indica che il nuovo elemento deve essere inserito all'inizio dell'insieme.Il valore -1 indica invece che l'elemento deve essere inserito alla fine.
  • Bases
    Tipo: System.Object
    Obbligatorio.Il valore predefinito è Nothing.Variante che contiene un elemento SafeArray di nomi di tipi completi o oggetti CodeInterface da cui deriva la nuova interfaccia.
  • ImplementedInterfaces
    Tipo: System.Object
    Obbligatorio.Il valore predefinito è Nothing.SafeArray di nomi di tipo completi o CodeInterfaces che rappresentano interfacce che dovranno essere implementate dalla nuova classe.

Valore restituito

Tipo: EnvDTE.CodeStruct
Oggetto CodeStruct.

Implementa

CodeModel.AddStruct(String, Object, Object, Object, Object, vsCMAccess)

Note

Il linguaggio Visual C++ nativo richiede il formato separato dai due punti (::) per i nomi di tipo completi. In tutti gli altri linguaggi è supportato il formato separato dal punto.

La correttezza degli argomenti è determinata dal linguaggio sottostante il modello di codice.

Nota

I valori degli elementi del modello di codice, quali classi, strutture, funzioni, attributi, delegati e così via, possono non essere deterministici dopo alcuni tipi di modifiche. Ciò significa che non si può fare affidamento sulla stabilità di tali valori. Per ulteriori informazioni, vedere la sezione Possibile modifica dei valori degli elementi del modello di codice in Individuazione di codice mediante il modello di codice (Visual Basic).

Esempi

Sub AddStructExample(ByVal dte As DTE2)

    ' Before running this example, open a code document from a project.
    Try
        Dim projItem As ProjectItem = dte.ActiveDocument.ProjectItem
        Dim cm As CodeModel = projItem.ContainingProject.CodeModel

        ' Initialize the base classes array and the implemented 
        ' interfaces array.
        Dim bases() As Object = {ConvertFullName(cm, "System.Object")}
        Dim interfaces() As Object = { _
            ConvertFullName(cm, "System.IDisposable"), _
            ConvertFullName(cm, "System.IComparable") _
        }

        ' Create a new struct.
        cm.AddStruct("TestStruct", projItem.Name, , bases, interfaces)
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try

End Sub

Function ConvertFullName(ByVal cm As CodeModel, _
    ByVal fullName As String) As String

    ' Convert a .NET type name into a C++ type name.
    If (cm.Language = CodeModelLanguageConstants.vsCMLanguageVC) Or _
        (cm.Language = CodeModelLanguageConstants.vsCMLanguageMC) Then
        Return fullName.Replace(".", "::")
    Else
        Return fullName
    End If

End Function
public void AddStructExample(DTE2 dte)
{
    // Before running this example, open a code document from 
    // a project.
    try
    {
        ProjectItem projItem = dte.ActiveDocument.ProjectItem;
        CodeModel cm = projItem.ContainingProject.CodeModel;

        // Initialize the base classes array and the implemented 
        // interfaces array.
        object[] bases = {ConvertFullName(cm, "System.Object")};
        object[] interfaces = {
        ConvertFullName(cm, "System.IDisposable"),
        ConvertFullName(cm, "System.IComparable")
        };

        // Create a new struct.
        cm.AddStruct("TestStruct", projItem.Name, -1, bases, 
            interfaces, vsCMAccess.vsCMAccessPublic);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

string ConvertFullName(CodeModel cm, string fullName)
{
    // Convert a .NET type name into a C++ type name.
    if ((cm.Language == CodeModelLanguageConstants.vsCMLanguageVC) || 
        (cm.Language == CodeModelLanguageConstants.vsCMLanguageMC))
        return fullName.Replace(".", "::");
    else
        return fullName;
}

Sicurezza di .NET Framework

Vedere anche

Riferimenti

CodeModel2 Interfaccia

Overload AddStruct

Spazio dei nomi EnvDTE80

Altre risorse

Procedura: compilare ed eseguire gli esempi di codice del modello a oggetti di automazione

Individuazione di codice mediante il modello di codice (Visual Basic)

Individuazione di codice mediante il modello di codice (Visual C#)