Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All
Important This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here.

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

Community Additions

© 2015 Microsoft