Compartir a través de


FileCodeModel2.AddStruct (Método)

Crea una nueva construcción de código de estructura e inserta el código en la ubicación adecuada.

Espacio de nombres:  EnvDTE80
Ensamblado:  EnvDTE80 (en EnvDTE80.dll)

Sintaxis

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

Parámetros

  • Name
    Tipo: String

    Obligatorio. Nombre de la nueva estructura.

  • Position
    Tipo: Object

    Opcional. Valor predeterminado = 0. Elemento de código tras el que se agrega el elemento nuevo. Si el valor es un CodeElement, el nuevo elemento se agregará inmediatamente tras él.

    Si el tipo de datos del valor es Long, AddStruct indicará el elemento detrás del cual se ha de agregar el nuevo elemento.

    Como el recuento de los elementos de una colección comienza a partir de 1, pasar un valor de 0 indica que el nuevo elemento deberá colocarse al principio de la colección. Un valor de -1 indica que el elemento deberá situarse al final de la colección.

  • Bases
    Tipo: Object

    Obligatorio. El valor predeterminado es Nothing. Tipo Variant que contiene una matriz SafeArray de nombres de tipo completos u objetos CodeInterface de los que deriva la nueva interfaz.

  • ImplementedInterfaces
    Tipo: Object

    Obligatorio. El valor predeterminado es Nothing. Matriz SafeArray de nombres de tipo completos u objetos CodeInterface, cada uno de los cuales representa interfaces que la nueva clase va a implementar.

  • Access
    Tipo: vsCMAccess

    Opcional. Constante vsCMAccess.

Valor devuelto

Tipo: CodeStruct
Un objeto CodeStruct.

Comentarios

Visual C++ requiere el formato de separación por signos de dos puntos (::) para sus nombres de tipo completos. Todos los demás lenguajes admiten el formato de separación por puntos.

La corrección de los argumentos vendrá determinada por el lenguaje que subyace al modelo de código.

Ejemplos

Sub AddStructExample2(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.
        projItem.FileCodeModel.AddStruct("TestStruct", , 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 AddStructExample2(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.
        projItem.FileCodeModel.AddStruct("TestStruct", -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;
}

Seguridad de .NET Framework

Vea también

Referencia

FileCodeModel2 Interfaz

EnvDTE80 (Espacio de nombres)

Otros recursos

Cómo: Compilar y ejecutar los ejemplos de código del modelo de objetos de automatización