FileCodeModel.AddClass 方法

更新:2007 年 11 月

创建新的类代码构造,并将代码插入正确的位置。

命名空间:  EnvDTE
程序集:  EnvDTE(在 EnvDTE.dll 中)

语法

声明
Function AddClass ( _
    Name As String, _
    Position As Object, _
    Bases As Object, _
    ImplementedInterfaces As Object, _
    Access As vsCMAccess _
) As CodeClass
用法
Dim instance As FileCodeModel
Dim Name As String
Dim Position As Object
Dim Bases As Object
Dim ImplementedInterfaces As Object
Dim Access As vsCMAccess
Dim returnValue As CodeClass

returnValue = instance.AddClass(Name, _
    Position, Bases, ImplementedInterfaces, _
    Access)
CodeClass AddClass(
    string Name,
    Object Position,
    Object Bases,
    Object ImplementedInterfaces,
    vsCMAccess Access
)
CodeClass^ AddClass(
    String^ Name, 
    Object^ Position, 
    Object^ Bases, 
    Object^ ImplementedInterfaces, 
    vsCMAccess Access
)
function AddClass(
    Name : String, 
    Position : Object, 
    Bases : Object, 
    ImplementedInterfaces : Object, 
    Access : vsCMAccess
) : CodeClass

参数

  • Position
    类型:System.Object

    可选。默认为 0。将在其后添加新元素的代码元素。如果该值为 CodeElement,则紧跟在其后添加新元素。

    如果该值为 Long 数据类型,则 AddClass 指示在哪个元素的后面添加新元素。

    因为集合从 1 开始计数,所以传递 0 指示应将新元素放置在集合的开始处。值为 -1 表示应将元素放在结尾处。

  • Bases
    类型:System.Object

    可选。默认值为 0。一个包含完全限定类型名或 CodeClass 对象(新类将从这些对象继承自己的实现)的 SafeArray。

  • ImplementedInterfaces
    类型:System.Object

    可选。默认值为 0。一个包含完全限定类型名或 CodeInterface 对象(每个对象表示新类承诺实现的一个接口)的 SafeArray。

返回值

类型:EnvDTE.CodeClass

一个 CodeClass 对象。

备注

参数正确与否由代码模型后面的语言决定。

示例

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;
}

权限

另请参见

参考

FileCodeModel 接口

FileCodeModel 成员

EnvDTE 命名空间

其他资源

如何:编译和运行自动化对象模型代码示例