给定一个类型名称,是有可能使用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;
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top