2010-07-20 15 views
6

संभव डुप्लिकेट:
How can I get generic Type from a string representation?सी # में सूची <String> सूची का प्रकार कैसे प्राप्त करें?

मैं सी # में "List<String>" के प्रकार Type.GetType() का उपयोग कर कैसे मिल सकता है?

मैं पहले से ही की कोशिश की है:

Type.GetType("List<String>"); 
Type.GetType("System.Collections.Generic.List.String"); // Or [String] 

ध्यान दें कि मैं मूल्य मैं के प्रकार हो रही है के बाद से typeof उपयोग नहीं कर सकते एक श्रृंखला है।

+0

ध्यान दें कि टेक्स्ट पैराग्राफ में कोण ब्रैकेट दिखाने के लिए, आपको कोड के रूप में प्रारूपित करने के लिए बैक-कोट्स का उपयोग करना होगा (जैसा कि मैंने अभी संपादित किया है)। – AakashM

+0

निम्न प्रश्न देखें: http://stackoverflow.com/questions/557340/c-generic-list-t-how-to-get-the-type-of-t – Peanut

उत्तर

18

आप इसे "List<String>" से नहीं मिल सकता है, लेकिन आप Type.GetType से प्राप्त कर सकते हैं:

Type type = Type.GetType("System.Collections.Generic.List`1[System.String]"); 

आप इस मामले में भाग्यशाली हैं - List<T> और string दोनों mscorlib में हैं, इसलिए हमें असेंबली निर्दिष्ट करने की आवश्यकता नहीं थी।

`1 भाग एआरटी प्रकार के प्रकार निर्दिष्ट करता है: इसमें एक प्रकार का पैरामीटर है। स्क्वायर ब्रैकेट में बिट टाइप तर्कों को निर्दिष्ट करता है।

आप कहां से List<String> प्राप्त कर रहे हैं? क्या आप अपनी आवश्यकताओं को बदल सकते हैं? यह स्ट्रिंग को पार्स करने से आसान होगा, टाइप पैरामीटर कहां हैं, विभिन्न नामस्थानों और असेंबली आदि में प्रकार ढूंढना आदि। यदि आप सीमित संदर्भ में काम कर रहे हैं (उदाहरण के लिए आपको केवल ज्ञात सेटों का समर्थन करने की आवश्यकता है) कुछ विवरणों को हार्ड-कोड करना सबसे आसान हो सकता है।

+0

@ डाउनवॉटर: आपको यह बताने की ज़रूरत है कि आपको क्या पसंद नहीं आया? –

+0

जियोर्गी ने आपके पहले 4 मिनट पहले ही यही जवाब दिया था। – onof

+0

@onof: नहीं, उसने नहीं किया। उन्होंने सिर्फ 'टाइपोफ' दिखाते हुए एक जवाब दिया, जिसे उन्होंने तब संपादित किया जब ओपी ने समझाया कि उन्हें स्ट्रिंग से टाइप प्राप्त करने की आवश्यकता है। मैं अपना जवाब लिख रहा था जबकि जियोर्गी उसका संपादन कर रहा था। आप संपादन को नहीं देख सकते क्योंकि यह पहले 5 मिनट में था, लेकिन यह स्पष्ट रूप से वहां था, या ओपी की टिप्पणी समझ में नहीं आती। –

3

आप typeof ऑपरेटर का उपयोग कर सकते हैं।

typeof(List<String>) 

इस सवाल देखें: C# How can I get Type from a string representation

+0

टाइपिफ़ एक स्ट्रिंग नहीं लेता है तर्क। मेरे पास स्ट्रिंग एस = "सूची " – scatman

1
System.Type type = typeof(List<String>); 
+0

यह तब तक काम नहीं करेगा जब तक आप सिस्टम.Web.UI.MobileControls.List टाइप नहीं करना चाहते हैं। क्या आपका मतलब टाइपऑफ (सूची <>) था? – Giorgi

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