Condividi tramite


FileCodeModel.AddClass(String, Object, Object, Object, vsCMAccess) Method

Definition

Creates a new class code construct and inserts the code in the correct location.

EnvDTE::CodeClass AddClass(std::wstring const & Name, 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(8)]
public EnvDTE.CodeClass AddClass (string Name, object Position, object Bases, object ImplementedInterfaces, EnvDTE.vsCMAccess Access = EnvDTE.vsCMAccess.vsCMAccessDefault);
[<System.Runtime.InteropServices.DispId(8)>]
abstract member AddClass : string * obj * obj * obj * EnvDTE.vsCMAccess -> EnvDTE.CodeClass
Public Function AddClass (Name As String, Optional Position As Object, Optional Bases As Object, Optional ImplementedInterfaces As Object, Optional Access As vsCMAccess = EnvDTE.vsCMAccess.vsCMAccessDefault) As CodeClass

Parameters

Name
String

Required. The name of the class.

Position
Object

Optional. Default = 0. The code element after which to add the new element. If the value is a CodeElement, then the new element is added immediately after it.

If the value is a Long data type, then AddClass(String, Object, Object, Object, vsCMAccess) indicates the element after which to add the new element.

Because collections begin their count at 1, passing 0 indicates that the new element should be placed at the beginning of the collection. A value of -1 means the element should be placed at the end.

Bases
Object

Optional. Default = 0. A SafeArray of fully qualified type names or CodeClass objects from which the new class inherits its implementations.

ImplementedInterfaces
Object

Optional. Default = 0. A SafeArray of fully qualified type names or CodeInterface objects, each representing an interface that the new class promises to implement.

Access
vsCMAccess

Optional. A vsCMAccess constant.

Returns

A CodeClass object.

Attributes

Examples

Sub AddClassExample2(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.  
        projItem.FileCodeModel.AddClass("TestClass", , 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 AddClassExample2(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.  
        projItem.FileCodeModel.AddClass("TestClass", -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;  
}  

Remarks

The correctness of the arguments is determined by the language behind the code model.

Applies to