2010-12-09 7 views
5

मेरे पास ASP.NET MVC एप्लिकेशन में निम्न enum है, और मैं पैरामीटर के रूप में उस enum का उपयोग करना चाहता हूं। ऐसा करने के लिए, मैं उस enum के लोअरकेस स्ट्रिंग प्रस्तुति को वापस करना चाहता हूं।मैं सी # में एक enum के लोअरकेस प्रतिनिधित्व कैसे प्राप्त करूं?

public enum SortOrder 
{ 
     Newest = 0, 
     Rating = 1, 
     Relevance = 2 
} 

मैं सी # में एनम के लोअरकेस का प्रतिनिधित्व कैसे प्राप्त कर सकता हूं? मैं चाहता हूं कि enums उनके प्राकृतिक शीर्षक के प्रतिनिधित्व को बनाए रखने के लिए भी चाहते हैं।

उत्तर

11

नहीं, object पर एक विस्तार विधि को छोड़कर नहीं है।

public static string ToLower (this object obj) 
{ 
    return obj.ToString().ToLower(); 
} 
2

वहाँ किसी भी तरह से छोटे अक्षर exceptiong स्ट्रिंग प्राप्त करने के लिए है:। Value.ToString() ToLower()?

नहीं (जब तक आप enum बदलने के लिए: newest, rating, relevance ...)

एक सामान्य तकनीक प्रत्येक enum सदस्य के खिलाफ एक विशेषता जोड़ने के लिए, स्ट्रिंग है कि आप इसे साथ संबद्ध करना चाहते निर्दिष्ट करने है , उदाहरण के लिए: http://weblogs.asp.net/grantbarrington/archive/2009/01/19/enumhelper-getting-a-friendly-description-from-an-enum.aspx

0

आप enum मान वाले स्ट्रिंग सरणी प्राप्त करने के लिए Enum.GetNames(...) का भी उपयोग कर सकते हैं। फिर, इन्हें निचले मामले में परिवर्तित करें। स्ट्रिंग से संबंधित एनम वैल्यू में कनवर्ट करने के लिए आप Enum.Parse विधि को true को तीसरे पैरामीटर में पास कर सकते हैं, जो तुलना केस असंवेदनशील बनाता है।

0

यदि एनम टेक्स्ट प्रदर्शित करने वाला है, तो सिस्टम (कॉम्पोनेंट मॉडल नामस्थान) के बारे में पता है (और इसका उपयोग करता है), तो आप सिस्टम के साथ enum को सजाने के लिए कर सकते हैं। कॉम्पोनेंट मॉडेल। डिस्क्रिप्शन एट्रिब्यूट और अपने आप में लोअरकेस संस्करण टाइप करें।

यदि आप सीधे स्ट्रिंग मान प्राप्त कर रहे हैं, तो आप अभी भी ऐसा कर सकते हैं, हालांकि प्रतिबिंब कोड लिखने का ओवरहेड आपसे निपटने के लिए अधिक हो सकता है।

एचटीएच, ब्रायन

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