CodeModel.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 um tipo de dados longo, 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.
- 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. Para obter mais informações, consulte os valores de elemento de modelo de código de seção podem ser alterados na descoberta de código usando o modelo de código (Visual Basic).