2010-01-04 13 views
11

बनाया मैं एक enum है:Enum प्रकार के स्ट्रिंग कनवर्ट नहीं कर सकता मैं

public enum Color 
{ 
    Red, 
    Blue, 
    Green, 
} 

अब अगर मैं एक XML फ़ाइल से शाब्दिक तार, मैं इसे कैसे करने के लिए enum प्रकार रंग परिवर्तित कर सकते हैं के रूप में उन रंगों पढ़ें।

class TestClass 
{ 
    public Color testColor = Color.Red; 
} 

अब जब इतने की तरह एक शाब्दिक स्ट्रिंग का उपयोग करके कि विशेषता सेटिंग, मैं संकलक से एक बहुत ही कठोर चेतावनी मिलती है। : डी स्ट्रिंग से रंग में कनवर्ट नहीं कर सकता।

कोई मदद?

TestClass.testColor = collectionofstrings[23].ConvertToColor?????; 

उत्तर

29

ऐसा कुछ है जो आप ढूंढ रहे हैं?

TestClass.testColor = (Color)Enum.Parse(typeof(Color), collectionofstrings[23]); 
+0

अंतर्निहित रूप से ऑब्जेक्ट टू कलर (एनम) को परिवर्तित नहीं कर सकता। इस मामले में मैं क्या कर सकता हूं? –

+0

@ सर्जीओ फिर आप स्पष्ट कास्ट (रंग) – pauloya

8

प्रयास करें:

TestClass.testColor = (Color)Enum.Parse(typeof(Color), collectionofstrings[23]); 

देखें documentation about Enum

संपादित करें: .NET 4.0 में आप एक अधिक प्रकार सुरक्षित विधि (और यह भी एक है कि अपवाद फेंक नहीं है का उपयोग कर सकते पार्सिंग विफल रहता है):

Color myColor; 
if (Enum.TryParse(collectionofstring[23], out myColor)) 
{ 
    // Do stuff with "myColor" 
} 
+0

चूक गए यह कहता है कि मैं ऑब्जेक्ट से रंग में परिवर्तित नहीं कर सकता। कोई मदद? –

+2

फिर आप संभवतः पार्स को कॉल के सामने रंग में कलाकारों को भूल गए थे। यह निश्चित रूप से स्ट्रिंग से enum तक जाने के लिए विधि है। –

+0

@MattGreer यदि आप * देखभाल * जब पार्स "विफल रहता है" तो यह करने का यह एक बेहतर तरीका है। यह सच है कि यह अपवाद नहीं फेंक देगा अगर इसे वास्तव में पार्स नहीं किया जा सकता है, लेकिन इसके बजाय यह एनम में जो भी '0' प्रविष्टि है, उसे वापस कर देगा और आपको कोई संकेत नहीं होगा कि यह वास्तव में विफल रहा है। – mmcrae

0

आपको Enum.Par का उपयोग करने की आवश्यकता है

TestClass.testColor = (Color)Enum.Parse(typeof(Color), collectionofstrings[23], true); 
0

हर किसी ने कहा है के रूप में:: से सही रंग enum मूल्य के लिए अपने स्ट्रिंग परिवर्तित करने के लिए

TestClass.testColor = (Color) Enum.Parse(typeof(Color), collectionofstrings[23]); 

आप क्योंकि collectionofstrings वस्तुओं का संग्रह है कोई समस्या आ रही है, तो कोशिश यह:

TestClass.testColor = (Color) Enum.Parse(
    typeof(Color), 
    collectionofstrings[23].ToString()); 
संबंधित मुद्दे