是否可以为已作为MetadataReference添加到编译中的程序集导出的类型获取ITypeSymbol的集合?
我想检查引用项目可用的类型。
答案 0 :(得分:4)
为每个MetadataReference调用Compilation.GetAssemblyOrModuleSymbol()
,强制转换为IAssemblySymbol
,然后查看TypeNames
属性(返回字符串)。
要获取每种类型的实际ITypeSymbol
,请获取程序集的GlobalNamespace
,然后递归爬行GetMembers()
(包括类型和嵌套命名空间)。您可以继承SymbolVisitor<IEnumerable<ITypeSymbol>>
来帮助递归(特别是对于嵌套类型)。