c# - Visual Studio Extension get all classes and interfaces metadata -


i have created visual studio extension project. works nice , neat. made event solutions.

the manuals in msdn , internet brief. , cannot find answer question: how can retrieve metadata related class , interfaces (namespaces, class names, base types, etc.) in solution extension package installed?

you can use itypediscoveryservice list available types in project.

to this, should add microsoft.visualstudio.shell.design reference project. way can use dynamictypeservice instance of itypediscoveryservice.

add methods package class:

public list<type> getalltypes() {     var trs = gettypediscoveryservice();     var types = trs.gettypes(typeof(object), true /*excludeglobaltypes*/);     var result = new list<type>();     foreach (type type in types)     {         if (type.ispublic)         {             if (!result.contains(type))                 result.add(type);         }     }     return result; }  private itypediscoveryservice gettypediscoveryservice() {     var dte = getservice<envdte.dte>();     var typeservice = getservice<dynamictypeservice>();     var solution = getservice<ivssolution>();     ivshierarchy hier;     var projects = dte.activesolutionprojects array;     var currentproject = projects.getvalue(0) project;     solution.getprojectofuniquename(currentproject.uniquename, out hier);     return typeservice.gettypediscoveryservice(hier); }  private t getservice<t>() {     return (t)getservice(typeof(t)); } 

then can use getalltypes types of active project:

list<type> types= getalltypes(); 

Comments