CodeImport.Kind Property

Definition

Gets an enumeration that defines the type of object.

public:
 property EnvDTE::vsCMElement Kind { EnvDTE::vsCMElement get(); };
public:
 property EnvDTE::vsCMElement Kind { EnvDTE::vsCMElement get(); };
[System.Runtime.InteropServices.DispId(5)]
public EnvDTE.vsCMElement Kind { [System.Runtime.InteropServices.DispId(5)] [System.Runtime.InteropServices.TypeLibFunc(1024)] get; }
[<System.Runtime.InteropServices.DispId(5)>]
[<get: System.Runtime.InteropServices.DispId(5)>]
[<get: System.Runtime.InteropServices.TypeLibFunc(1024)>]
member this.Kind : EnvDTE.vsCMElement
Public ReadOnly Property Kind As vsCMElement

Property Value

A vsCMElement value.


The values of code model elements such as classes, structs, functions, attributes, delegates, and so forth can be non-deterministic after making certain kinds of edits, meaning that their values cannot be relied upon to always remain the same.

Implements

Attributes

Examples

Sub KindExample(ByVal dte As DTE2)  

    ' NOTE: This example requires a reference to the System.Text   
    '       namespace.  

    ' Before running this example, open a code document from a project.  
    Dim item As ProjectItem = dte.ActiveDocument.ProjectItem  
    Dim sb As New StringBuilder  

    RecurseElements(item.FileCodeModel.CodeElements, 0, sb)  

    MsgBox(item.Name & " contains the following elements:" & vbCrLf & _  
        vbCrLf & sb.ToString())  

End Sub  

Sub RecurseElements(ByVal elems As CodeElements, _  
    ByVal level As Integer, ByVal sb As StringBuilder)  

    Dim elem As CodeElement  
    For Each elem In elems  
        ' Add element to the list of names.  
        sb.Append(" "c, level * 8)  
        sb.Append(elem.Name & " [" & elem.Kind.ToString() & "]" & _  
            vbCrLf)  

        ' Call this function recursively if element has children.  
        If elem.Kind = vsCMElement2.vsCMElementNamespace Then  
            RecurseElements(CType(elem, CodeNamespace).Members, _  
                level + 1, sb)  
        ElseIf elem.IsCodeType Then  
            RecurseElements(CType(elem, CodeType).Members, _  
                level + 1, sb)  
        End If  
    Next  

End Sub  
public void KindExample(DTE2 dte)  
{  
    // NOTE: This example requires a reference to the   
    //       System.Text namespace.  

    // Before running this example, open a code document from   
    // a project.  
    ProjectItem item = dte.ActiveDocument.ProjectItem;  
    StringBuilder sb = new StringBuilder();  

    RecurseElements(item.FileCodeModel.CodeElements, 0, sb);  
    MessageBox.Show(item.Name +   
        " contains the following elements:\n\n" + sb.ToString());  
}  

void RecurseElements(CodeElements elems, int level, StringBuilder sb)  
{  
    foreach (CodeElement elem in elems)  
    {  
        // Add element to the list of names.  
        sb.Append(' ', level * 8);  
        sb.Append(elem.Name + " [" + elem.Kind.ToString() + "]\n");  

        // Call this function recursively if element has children.  
        if (elem.Kind == vsCMElement.vsCMElementNamespace)  
            RecurseElements(((CodeNamespace)elem).Members,   
                level + 1, sb);  
        else if (elem.IsCodeType)  
            RecurseElements(((CodeType)elem).Members, level + 1, sb);  
    }  
}  

Applies to