CodeModel2.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, _
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
Parámetros
Name
Tipo: StringObligatorio. Nombre de la nueva estructura.
Location
Tipo: ObjectObligatorio. Ruta de acceso y nombre de archivo correspondientes a la nueva definición de estructura. En función del lenguaje, el nombre de archivo será relativo o absoluto con respecto al archivo de proyecto. El archivo se agregará al proyecto si todavía no es un elemento del mismo. Si no es posible crear el archivo y agregarlo al proyecto, AddStruct producirá un error.
Position
Tipo: ObjectOpcional. 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: ObjectObligatorio. 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: ObjectObligatorio. El valor predeterminado es Nothing. SafeArray de nombres de tipo completos u objetos CodeInterfaces que representan interfaces que la nueva clase va a implementar.
Access
Tipo: vsCMAccessOpcional. Constante vsCMAccess.
Valor devuelto
Tipo: CodeStruct
Un objeto CodeStruct.
Comentarios
Visual C++ nativo 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.
Nota
Los valores de los elementos de modelo de código como clases, structs, funciones, atributos, delegados, etc., pueden ser no deterministas una vez realizados determinados tipos de modificaciones; esto significa que no se puede confiar en que sus valores se mantengan siempre igual.Para obtener más información, vea la sección Los valores de elementos de modelo de código pueden cambiar, en Detectar código utilizando el modelo de código (Visual Basic).
Ejemplos
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;
}
Seguridad de .NET Framework
- Plena confianza para el llamador inmediato. Un código de confianza parcial no puede utilizar este miembro. Para obtener más información, vea Utilizar bibliotecas de código que no es de plena confianza.
Vea también
Referencia
Otros recursos
Cómo: Compilar y ejecutar los ejemplos de código del modelo de objetos de automatización
Detectar código utilizando el modelo de código (Visual Basic)