gpt4 book ai didi

c# - Visual Studio 扩展获取所有类和接口(interface)元数据

转载 作者:太空狗 更新时间:2023-10-30 00:39:52 24 4
gpt4 key购买 nike

我已成功创建 Visual Studio 扩展项目。它工作得很好,很整洁。我为解决方案做了一些事件。

MSDN 和 Internet 中的手册都很简短。我找不到我的问题的答案:如何在安装此扩展包的解决方案中检索与类和接口(interface)相关的所有元数据(命名空间、类名、基类型等)?

最佳答案

您可以使用 ITypeDiscoveryService列出项目中的所有可用类型。

为此,您应该将 Microsoft.VisualStudio.Shell.Design 引用添加到项目中。这样你就可以使用 DynamicTypeService获取 ITypeDiscoveryService 的实例。

将此方法添加到您的 Package 类中:

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 as Array;
var currentProject = projects.GetValue(0) as Project;
solution.GetProjectOfUniqueName(currentProject.UniqueName, out hier);
return typeService.GetTypeDiscoveryService(hier);
}

private T GetService<T>()
{
return (T)GetService(typeof(T));
}

然后您可以使用GetAllTypes 获取所有类型的事件项目:

List<Type> types= GetAllTypes();

关于c# - Visual Studio 扩展获取所有类和接口(interface)元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32791188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com