按类型名称通过DTE查找项目项
-
23-09-2019 - |
题
给定一个类型名称,是有可能使用DTE找到项目项的类型位于?类似Navigate To...
对话如何在Visual Studio 2010中的东西。
我能找到的最接近的是 Solution.FindProjectItem
,但是,取入的文件名。
谢谢!
解决方案
我一直试图做同样的事情,而且都拿出了;下面,通过简单的命名空间和类搜索,直到打你,你正在寻找的人。
这似乎在大多数情况下,工作虽然遇到局部类时,它只会返回第一个命中,并且因为它是该文件的一个模型,可以将只包含在文件中的成员。不过搞清楚什么做这个。
这是来自一个T4模板,并使用T4工具包(这是TransformationContext来自),所以如果你不使用,只得到一个项目元素的保持和传递Project.CodeModel.CodeElements递归的findClass方法
实施例的使用将是findClass的( “MyCompany.DataClass”);
private CodeClass FindClass(string className)
{
return FindClass(TransformationContext.Project.CodeModel.CodeElements, className);
}
private CodeClass FindClass(CodeElements elements, string className)
{
foreach (CodeElement element in elements)
{
if(element is CodeNamespace || element is CodeClass)
{
CodeClass c = element as CodeClass;
if (c != null && c.Access == vsCMAccess.vsCMAccessPublic)
{
if(c.FullName == className)
return c;
CodeClass subClass = FindClass(c.Members, className);
if(subClass!= null)
return subClass;
}
CodeNamespace ns = element as CodeNamespace;
if(ns != null)
{
CodeClass cc = FindClass(ns.Members, className);
if(cc != null)
return cc;
}
}
}
return null;
}
不隶属于 StackOverflow