से संपत्ति नाम निकालने के लिए मैं एक C# फ़ाइल को पार्स करना चाहता हूं। एकमात्र चीज जो मैं चाहता हूं वह यह निर्धारित करना है कि इसमें एक विशिष्ट नाम वाली संपत्ति है या नहीं; बस एक साधारण सच/झूठी प्रतिक्रिया। या बल्कि, के बाद से मैं एक समय में एक से अधिक संपत्ति के लिए जाँच था, संपत्ति नामों की सूची निकालने उपयोगीसी # स्रोत फ़ाइल
मैंने सोचा था कि मैं CodeDomProvider
कार्यक्षमता (च # उदाहरण) का उपयोग कर एक सुरुचिपूर्ण समाधान बना सकते हैं हो सकता है:
use reader = new StreamReader(existingFile)
let codeProvider = new CSharpCodeProvider()
let codeUnit = codeProvider.Parse(reader)
दुर्भाग्यवश, Parse
फ़ंक्शन CSharpCodeProvider
के लिए लागू नहीं किया गया है। क्या स्रोत फ़ाइल से CodeCompileUnit
प्राप्त करने का कोई तरीका है? या कोई और सुरुचिपूर्ण तरीका है? (मुझे इस पर नियमित अभिव्यक्ति से बचने की उम्मीद थी)?
संपादित करें: मैं स्वचालित कोड पीढ़ी के लिए इसका उपयोग करने जा रहा हूं। असल में, मैं फ़ाइल xyz.partial.cs में आंशिक वर्ग उत्पन्न करने जा रहा हूं। यह एक कंकाल संपत्ति उत्पन्न करेगा। लेकिन अगर मैं किसी संपत्ति के कार्यान्वयन को बदलना चाहता हूं, तो मैं उस संपत्ति को काट दूंगा और उसे हाथ में कोडित xyz.cs. में पेस्ट करूँगा। जेनरेटेड क्लास को पुनर्निर्मित करते समय, मैं चाहता हूं कि यह उत्पन्न गुणों को छोड़ दें जो मैं हाथ से कोडित फ़ाइल में स्थानांतरित हो गया हूं।
इसलिए, प्रतिबिंब प्रश्न से बाहर है, क्योंकि प्रतिबिंब मुझे बताएगा कि संपत्ति वास्तव में मौजूद है, लेकिन यदि यह एक या दूसरी फ़ाइल में परिभाषित नहीं है।
फिर भी, मैं ओपन एक्सप्रेसो पॉप करने के लिए खुजली कर रहा हूं और इसे एक शॉट देता हूं। मैं नियमित रूप से कुछ भी अभिव्यक्ति कर सकता हूं और 'शक्ति में मुझे शक्ति नहीं रोक सकती है। –
क्या आपने स्रोत के संकलित संस्करण पर प्रतिबिंब पर विचार किया था? या यह एक विकल्प नहीं है? निश्चित नहीं है कि प्रतिबिंब संपत्ति नाम प्रदान करता है हालांकि। –
@ मॉरॉन - यह वास्तव में बहुत अच्छी तरह से काम करना चाहिए। – ChaosPandion