3

我正在为 VS2010 中的 UML 序列图构建命令扩展,并且需要在当前解决方案中实现特定接口的类型列表。如何从扩展中访问类型和程序集信息?到目前为止,我所有的尝试都只是列出了原始扩展项目中加载的程序集,而不是 VS 当前正在编辑的程序集。

4

1 回答 1

5

这是我最终得出的解决方案,使用 linq 来简化搜索:

DTE dte = (DTE)ServiceProvider.GetService(typeof(DTE));
var types = from Project project in dte.Solution.Projects
            from Reference reference in (References)project.Object.References
            where reference.Type == prjReferenceType.prjReferenceTypeAssembly
            from t in Assembly.LoadFile(reference.Path).GetTypes()
            where t != typeof(IInterface) && typeof(IInterface).IsAssignableFrom(t)
            select t;

此块搜索当前打开的解决方案中包含的所有项目,获取它们的所有引用,加载作为程序集的那些,并在它们中搜索实现接口的类型。

于 2011-07-11T13:10:38.883 回答