我使用该IVsObjectList2.GetCategoryField2
方法来检索一种类型的不同信息。
现在我想知道如何检索 C# 特定信息,如类型abstract
或internal
修饰符?对象浏览器可以显示这些信息。
更新1:
我再次尝试获取此信息。通过DynamicTypeService
和IVsHierarchy
(项目的)我可以得到TypeResolutionService
. 然后这可以返回Type
我正在寻找的类型,并形成我得到信息(内部、抽象等)的类型
不幸的是,这只适用于 .NET Framework 项目。.NET Core 项目不起作用。假设是 .NET 核心项目在解决时会导致问题,因为 VS 插件(或 Visual Studio SDK)在 .NET Framework 下运行。
var dte = Package.GetGlobalService(typeof(DTE)) as DTE2;
var serviceProvider = new ServiceProvider((Microsoft.VisualStudio.OLE.Interop.IServiceProvider)dte);
IVsSimpleObjectList2 objectList;
....
objectList.CountSourceItems(index, out var vsHierarchy, out var itemid, out var pcItems);
DynamicTypeService dynamicTypeService = (DynamicTypeService)serviceProvider.GetService(typeof(DynamicTypeService));
var typeResolutionService = dynamicTypeService.GetTypeResolutionService(hier);
var type = typeResolutionService.GetType("ObjectBuilder.ObjectBrowserTestTypes.AbstractTestClass");
更多信息:Visual Studio Extension 获取所有类和接口元数据
我仍在寻找解决方案。有人有其他想法吗?