2010-03-30 27 views
9

के माध्यम से टाइप नाम द्वारा प्रोजेक्टइटम ढूंढना एक प्रकार का नाम दिया गया है, क्या प्रोजेक्टइटम को ढूंढने के लिए डीटीई का उपयोग करना संभव है? Navigate To... संवाद विजुअल स्टूडियो 2010 में कैसे काम करता है।डीटीई

निकटतम मुझे मिल सकता है Solution.FindProjectItem, लेकिन यह फ़ाइल नाम लेता है।

धन्यवाद!

उत्तर

8

मैं कुछ ऐसा करने की कोशिश कर रहा हूं, और निम्नलिखित के साथ आया हूं, जो कि जब तक आप ढूंढ रहे हैं तब तक केवल नामस्थानों और कक्षाओं के माध्यम से खोज करता है।

यह ज्यादातर मामलों में काम करता प्रतीत होता है हालांकि आंशिक वर्ग का सामना करते समय यह केवल पहली हिट लौटाएगा, और क्योंकि यह फ़ाइल का एक मॉडल है, इसमें केवल उस फ़ाइल में सदस्य ही होंगे। अभी भी पता लगाना कि इसके बारे में क्या करना है।

यह एक टी 4 टेम्पलेट से आता है और टी 4 टूलकिट (जहां ट्रांसफ़ॉर्म कॉन्टेक्स्ट से आता है) का उपयोग कर रहा है, इसलिए यदि आप इसका उपयोग नहीं कर रहे हैं, तो बस एक प्रोजेक्ट तत्व को पकड़ लें और प्रोजेक्ट पास करें। कोडोडेल.कोड एलिमेंट्स रिकर्सिव 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; 
} 
+0

धन्यवाद! मैं वास्तव में ऐसा कुछ कर रहा था। मैं तब से आपका जवाब स्वीकार करने जा रहा हूं ... ठीक है आप अभी तक एकमात्र सही हैं :) –

+0

ब्याज से, क्या आपने आंशिक कक्षाओं के साथ निपटाया है? मैं सोच रहा था कि मुझे खोज को विशेष नामस्थानों तक सीमित करना पड़ सकता है, और फिर सभी मैचों को वापस करने के माध्यम से सभी तरह से खोजना पड़ सकता है। – RSlaughter

+0

मैं वास्तव में किसी प्रकार के सदस्य की घोषणा खोजने के साधनों की खोज में हूं, लेकिन यह मुझे बहुत करीब ले जाता है। बहुत धन्यवाद! – TheXenocide