CodeModel.AddStruct-Methode
Erstellt ein neues Strukturcodekonstrukt und fügt den Code an der korrekten Position ein.
Namespace: EnvDTE
Assembly: EnvDTE (in EnvDTE.dll)
Syntax
'Declaration
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
Parameter
- Name
Typ: System.String
Erforderlich.Der Name der neuen Struktur.
- Location
Typ: System.Object
Erforderlich.Der Pfad- und Dateiname für die neue Strukturdefinition.Je nach Sprache wird der Dateiname entweder relativ oder absolut zur Projektdatei angegeben.Die Datei wird dem Projekt hinzugefügt, wenn sie nicht bereits als Projektelement vorhanden ist.Wenn die Datei nicht erstellt und dem Projekt hinzugefügt werden kann, schlägt AddStruct fehl.
- Position
Typ: System.Object
Optional.Standardwert = 0.Das Codeelement, hinter dem das neue Element hinzugefügt werden soll.Wenn der Wert ein CodeElement ist, wird das neue Element unmittelbar im Anschluss hinzugefügt.
Wenn der Wert ein Long-Datentyp ist, gibt AddStruct das Element an, nach dem das neue Element hinzugefügt werden soll.
Da die Zählung bei Auflistungen mit 1 beginnt, wird mit dem Wert 0 angegeben, dass das neue Element am Anfang der Auflistung eingefügt werden soll.Bei einem Wert von -1 wird das Element am Ende eingefügt.
- Bases
Typ: System.Object
Erforderlich.Der Standardwert lautet Nothing.Eine Variante, die ein SafeArray mit vollqualifizierten Typnamen oder CodeInterface-Objekte enthält, von dem bzw. denen die neue Schnittstelle abgeleitet wird.
- ImplementedInterfaces
Typ: System.Object
Erforderlich.Der Standardwert lautet Nothing.Ein SafeArray mit vollqualifizierten Typnamen oder CodeInterface-Objekten, die jeweils Schnittstellen darstellen, für die die neue Klasse eine Implementierung zusichert.
- Access
Typ: EnvDTE.vsCMAccess
Optional.Eine vsCMAccess-Konstante.
Rückgabewert
Typ: EnvDTE.CodeStruct
Ein CodeStruct-Objekt.
Hinweise
Im systemeigenen Visual C++ ist ein doppelter Doppelpunkt (::) als Trennzeichen für vollqualifizierte Typnamen erforderlich.Alle anderen Programmiersprachen unterstützen das durch Punkte getrennte Format.
Die Gültigkeit der Argumente wird durch die Sprache des Codemodells bestimmt.
Hinweis |
---|
Die Werte von Codemodellelementen wie Klassen, Strukturen, Funktionen, Attributen, Delegaten usw. können nach bestimmten Bearbeitungsvorgängen nicht deterministisch sein, d. h., dass nicht mehr davon ausgegangen werden kann, dass ihre Werte immer unverändert bleiben.Weitere Informationen finden Sie im Abschnitt zum Änderungsverhalten von Codemodellelementwerten unter Ermitteln von Code über das Codemodell (Visual Basic). |
Beispiele
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;
}
.NET Framework-Sicherheit
- Volle Vertrauenswürdigkeit für den unmittelbaren Aufrufer. Dieser Member kann von nur teilweise vertrauenswürdigem Code nicht verwendet werden. Weitere Informationen finden Sie unter Verwenden von Bibliotheken aus teilweise vertrauenswürdigem Code.
Siehe auch
Referenz
Weitere Ressourcen
Gewusst wie: Kompilieren und Ausführen der Codebeispiele für das Automatisierungsobjektmodell