This documentation is archived and is not being maintained.

CodeElement.IsCodeType Property

Indicates whether or not a CodeType object can be obtained from the CodeElement object.

Namespace: EnvDTE
Assembly: EnvDTE (in envdte.dll)

bool IsCodeType { get; }
/** @property */
boolean get_IsCodeType ()

function get IsCodeType () : boolean

Property Value

A Boolean value indicating whether or not a CodeType object can be obtained from the CodeElement object.

True if a CodeType object can be obtained, otherwise returns False. If it is True, then you can query interface or cast it to a CodeType object. This is true when Kind is vsCMElementClass, vsCMElementInterface, vsCMElementDelegate, vsCMElementStruct, or vsCMElementEnum.


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. For more information, see the section Code Model Element Values Can Change in Discovering Code with the Code Model (Visual Basic).

public void IsCodeTypeExample(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:" + 
        Environment.NewLine + Environment.NewLine + 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() + "]" + 

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