CodeModel2.AddClass(String, Object, Object, Object, Object, vsCMAccess) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Cria uma nova construção de código de classe e insere o código no local correto.
EnvDTE::CodeClass AddClass(std::wstring const & Name, winrt::Windows::Foundation::IInspectable const & Location, winrt::Windows::Foundation::IInspectable const & Position, winrt::Windows::Foundation::IInspectable const & Bases, winrt::Windows::Foundation::IInspectable const & ImplementedInterfaces, EnvDTE::vsCMAccess Access = EnvDTE.vsCMAccess.vsCMAccessDefault);
[System.Runtime.InteropServices.DispId(7)]
public EnvDTE.CodeClass AddClass (string Name, object Location, object Position, object Bases, object ImplementedInterfaces, EnvDTE.vsCMAccess Access = EnvDTE.vsCMAccess.vsCMAccessDefault);
[<System.Runtime.InteropServices.DispId(7)>]
abstract member AddClass : string * obj * obj * obj * obj * EnvDTE.vsCMAccess -> EnvDTE.CodeClass
Public Function AddClass (Name As String, Location As Object, Optional Position As Object, Optional Bases As Object, Optional ImplementedInterfaces As Object, Optional Access As vsCMAccess = EnvDTE.vsCMAccess.vsCMAccessDefault) As CodeClass
Parâmetros
- Name
- String
Obrigatórios. O nome da classe.
- Location
- Object
Obrigatórios. O caminho e o nome do arquivo para a nova definição de classe. Dependendo do idioma, o nome do arquivo é relativo ou absoluto ao arquivo do projeto. O arquivo será adicionado ao projeto se ele ainda não for um item de projeto. Se o arquivo não puder ser criado e adicionado ao projeto, o AddClass(String, Object, Object, Object, Object, vsCMAccess) falhará.
- Position
- Object
Opcional. Padrão = 0. O elemento de código depois do qual adicionar o novo elemento. Se o valor for a CodeElement , o novo elemento será adicionado imediatamente após ele.
Se o valor for Long, AddClass(String, Object, Object, Object, Object, vsCMAccess) indicará o elemento depois do qual adicionar o novo elemento.
Como as coleções começam sua contagem em 1, passar 0 indica que o novo elemento deve ser colocado no início da coleção. Um valor de-1 significa que o elemento deve ser posicionado no final.
- Bases
- Object
Obrigatórios. Padrão = 0. Uma SafeArray de nomes de tipo totalmente qualificados ou CodeClass objetos dos quais a nova classe herda suas implementações.
- ImplementedInterfaces
- Object
Obrigatórios. Padrão = 0. Uma SafeArray de nomes de tipo totalmente qualificados ou CodeInterface objetos, cada um representando uma interface que a nova classe promete implementar.
- Access
- vsCMAccess
Opcional. Uma constante vsCMAccess.
Retornos
Um objeto CodeClass.
Implementações
- Atributos
Exemplos
Sub AddClassExample(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 class.
cm.AddClass("TestClass", 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 AddClassExample(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 class.
cm.AddClass("TestClass", 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;
}
Comentários
A exatidão dos argumentos é determinada pelo idioma por trás do modelo de código.
Observação
Os valores dos elementos de modelo de código, como classes, structs, funções, atributos, delegados e assim por diante, podem ser não determinísticos depois de fazer determinados tipos de edições, o que significa que seus valores não podem ser dependentes para sempre permanecerem os mesmos.