Metodo CodeModel.AddStruct
Crea un nuovo costrutto di codice della struttura e inserisce il codice nella posizione corretta.
Spazio dei nomi: EnvDTE
Assembly: EnvDTE (in EnvDTE.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.Il percorso e nome file per la definizione della nuova struttura.A seconda del linguaggio, il nome file può essere relativo o assoluto rispetto al file di progetto.Il file verrà aggiunto al progetto se non è già un elemento di progetto.Se il file non può essere creato e aggiungerlo al progetto, quindi AddStruct ha 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, quindi il nuovo elemento verrà aggiunto immediatamente dopo.
Se il valore è di tipo long, quindi AddStruct indica l'elemento dopo il quale deve essere aggiunto il nuovo elemento.
Poiché nelle raccolte il conteggio inizia da 1, un valore 0 indica che il nuovo elemento deve essere inserito all'inizio della raccolta.Il valore -1 indica che l'elemento deve essere inserito alla fine.
- Bases
Tipo: System.Object
obbligatorio.il valore predefinito è Nothing.Variant contenente un elemento SafeArray di nomi di tipi completi o CodeInterface oggetti da cui deriva la nuova interfaccia.
- ImplementedInterfaces
Tipo: System.Object
obbligatorio.il valore predefinito è Nothing.SafeArray di nomi di tipi completi oCodeInterface oggetto che rappresenta interfacce che dovranno essere implementate dalla nuova classe.
- Access
Tipo: EnvDTE.vsCMAccess
facoltativo.In vsCMAccess costante.
Valore restituito
Tipo: EnvDTE.CodeStruct
In CodeStruct oggetto.
Note
L'oggetto nativo di Visual C++ nativo richiede (::) il formato due punti per i nomi di tipo completi.Tutti gli altri linguaggi supportano il formato separato dal punto.
La precisione degli argomenti è determinata dal linguaggio del modello di codice.
[!NOTA]
I valori degli elementi del modello di codice come classi, strutture, le funzioni, gli attributi, delegati, e così via possono non essere deterministici dopo l'inserimento di determinati tipi di modifiche, pertanto i relativi valori non possono essere basati su per rimanere sempre gli stessi.Per ulteriori informazioni, vedere i valori degli elementi del modello di codice della sezione può cambiare 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
- Attendibilità totale per il chiamante immediato. Impossibile utilizzare questo membro in codice parzialmente attendibile. Per ulteriori informazioni, vedere Utilizzo di librerie da codice parzialmente attendibile.
Vedere anche
Riferimenti
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#)