2010-07-07 14 views
9

मैं WPF के साथ काम कर रहा हूं और अक्सर किसी दिए गए वर्ग का नामस्थान और असेंबली नाम प्राप्त करने की आवश्यकता होती है। लेकिन मुझे नहीं पता कि यह कैसे करें।समाधान में दिए गए वर्ग के पूर्ण नामस्थान के साथ असेंबली नाम और कक्षा का नाम कैसे प्राप्त करें?

तो, हम समाधान एक्सप्लोरर में कक्षाओं को ब्राउज़ करते समय या/और कक्षा के कोड संपादित करते समय नाम कैसे प्राप्त कर सकते हैं? कृपया सहायता कीजिए!

उत्तर

12

आप विजुअल स्टूडियो तत्काल विंडो का उपयोग समाधान परियोजनाओं में से किसी एक के लिए असेंबली योग्य नाम प्राप्त करने के त्वरित तरीके के रूप में कर सकते हैं।

IIRC, निम्न चरणों का काम करना चाहिए:

  1. ओपन कक्षा प्रोजेक्ट है जिसके लिए आप विधानसभा नाम प्राप्त करने के लिए चाहते हैं में निहित फ़ाइल;
  2. उस प्रोजेक्ट को समाधान के लिए स्टार्टअप प्रोजेक्ट के रूप में सेट करें;
  3. ओपन तत्काल खिड़की, डिफ़ॉल्ट सी # पर्यावरण शॉर्टकट CTRL + डी + मैं है;
  4. तत्काल विंडो प्रकार typeof(ClassNameOfStep1).AssemblyQualifiedName में और दबाएं दर्ज करें।

तत्काल खिड़की डिजाइन समय अभिव्यक्ति मूल्यांकन जो बारी-बारी दृश्य स्टूडियो होस्टिंग प्रक्रिया की निर्भर करता है, तो आप इसे सक्षम है, जो डिफ़ॉल्ट रूप से पहले से ही है की आवश्यकता पर निर्भर करता है।

इसके अलावा, मैंने कुछ त्वरित परीक्षण किए और वर्ग का नाम सभी मामलों में पर्याप्त था, सिवाय इसके कि जब मैंने इसे वीएस 2008 पर कोशिश की, तो मुझे इस प्रकार के FullName प्रदान करने की आवश्यकता थी।तो यदि Name त्रुटि में परिणाम Name नामस्थान के साथ योग्यता का उपयोग करते हैं।

+1

मैंने कोशिश की, लेकिन त्रुटि मिली "टाइप या नेमस्पेस नाम 'MyClass' इस दायरे में मान्य नहीं है" –

+2

@Nam Gi VU, 'MyClass' के बजाय' MyNamespace.MyClass' का उपयोग करने का प्रयास करें। –

+0

@ एंजेलो: मैंने कक्षा के पूर्ण नामस्थान में रखा लेकिन यह भी काम नहीं करता है। मुझे "सीसीसी 'नामस्थान' एबीबी 'में मौजूद नहीं है" जब मैं टाइपऑफ (एबीबी.सीसीसी.डीडीडीडी) में पास करता हूं .अनुप्रयोग योग्यता नाम :) –

4

ये आप देना चाहिए के बाद आप क्या कर रहे हैं:

var assemblyName = typeof(ClassNameGoesHere).AssemblyQualifiedName; 
var namespaceOfClass = typeof(ClassNameGoesHere).Namespace; 

मैं देख रहा हूँ तुम सिर्फ के बारे में "जब समाधान Explorer में कक्षाएं ब्राउज़ कर" अपने प्रश्न के लिए एक नोट जोड़ दिया है, सरल जवाब है कि है जहाँ तक मुझे पता है, आप नहीं क्योंकि कि क्या समाधान Explorer के लिए है नहीं है (यह एक समाधान में फ़ाइलों को ब्राउज़ करने के लिए नहीं है, नहीं क्या उन्हें अंदर निहित है) और इसलिए भी क्योंकि कर सकते हैं:

  1. एक फ़ाइल एकाधिक शामिल कर सकते हैं कक्षा
  2. एक परियोजना में सभी फाइलें , आमतौर पर को एक ही असेंबली में संकलित कर देगी, जिससे प्रत्येक फ़ाइल को के लिए उस नाम को प्रदर्शित करने के लिए अनावश्यक बना दिया जाएगा।

आप देख सकते हैं कि "क्लास व्यू" आपको क्या चाहता है, लेकिन मुझे संदेह है कि यह नहीं होगा।

+0

हाय रोब, मैं एक नहीं कोडन समाधान के लिए देख रहा हूँ का हिस्सा है। वैसे भी धन्यवाद। –

+0

@Nam Gi VU, मैंने समाधान एक्सप्लोरर से संबंधित प्रश्न के अतिरिक्त आपके खाते को ध्यान में रखकर एक अपडेट जोड़ा है। – Rob

+0

मैं देखता हूं। मैंने क्लास व्यू में कोशिश की है लेकिन वहां कोई मदद नहीं है। मैंने केस जोड़ने के लिए अद्यतन किया है: कक्षा के कोड को संपादित करते समय। –

-3

आपको Object Browser की आवश्यकता है। दबाएं Ctrl + Alt + जे

वहां आपको सभी प्रकार की मेटा जानकारी दिखाई देगी।

+0

क्या आप इस बारे में अधिक समझा सकते हैं कि मुझे किस मेटा जानकारी की तलाश करनी चाहिए? –

2

आप एफ # interative उपयोग कर सकते हैं, बस विंडो खोलने (देखें -> अन्य विंडोज -> एफ # इंटरएक्टिव) और निम्न प्रयास करें:

> typedefof<System.Uri>.Assembly.FullName;; 
    val it : string = 
     "System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 

स्वचालित रूप से प्रणाली की तरह संदर्भित कुछ विधानसभाओं रहे हैं। यदि आपको किसी अन्य असेंबली से नाम प्राप्त करने की आवश्यकता है, तो आपको पहले संदर्भ जोड़ना होगा (उदाहरण के लिए सेवा मॉडल की तरह)।

> #r "System.ServiceModel.dll";; 

--> Referenced 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.ServiceModel.dll' 

> typedefof<System.ServiceModel.ICommunicationObject>.Assembly.FullName;; 
val it : string = 
    "System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 

एफ # interative विजुअल स्टूडियो 2010

संबंधित मुद्दे