2010-03-25 6 views
5

ठीक है, मुझे नहीं लगता कि शीर्षक सही कहता है ... लेकिन यहां जाता है:संभव एक स्ट्रिंग नाम के आधार पर एक Enum लोड करने के लिए?

मेरे पास लगभग 40 Enums के साथ एक कक्षा है। अर्थात्:

Class Hoohoo 
    { 

     public enum aaa : short 
     { 
      a = 0, 
      b = 3 
     } 

     public enum bbb : short 
     { 
     a = 0, 
     b = 3 
     } 

     public enum ccc : short 
     { 
     a = 0, 
     b = 3 
     } 
} 

अब कहते हैं कि मैं तार और मूल्यों की एक शब्दकोश है, और प्रत्येक स्ट्रिंग ऊपर उल्लेख किया enums का नाम है:

Dictionary<string,short>{"aaa":0,"bbb":3,"ccc":0} 

मैं करने के लिए HooBoo.aaa में "aaa" को बदलने की जरूरत देखो 0 एनम स्थिर होने के बाद ऐसा करने का कोई तरीका नहीं दिख रहा है। अन्यथा मुझे प्रत्येक enum के लिए स्ट्रिंग को बांधने के लिए एक विधि लिखनी होगी। मैं ऐसा कर सकता हूं लेकिन लिखने के लिए बहुत कोड है।

धन्यवाद, Cooter

उत्तर

4

आप प्रतिबिंब का उपयोग करने के लिए अंतर्निहित enum प्रकार अर्जित करने होंगे: आप वास्तविक enum मूल्य प्राप्त करना चाहते हैं

Type t = typeof(Hoohoo); 
Type enumType = t.GetNestedType("aaa"); 
string enumName = Enum.GetName(enumType, 0); 

, तो आप उपयोग कर सकते हैं:

var enumValue = Enum.Parse(enumName, enumType); 
+0

बिल्कुल सही। मुझे पता था कि एक साधारण जवाब होगा .... धन्यवाद। – Cooter

0

आप एक स्ट्रिंग परिवर्तित करना चाहते हैं -> enum? This मदद चाहिए।

0

बस ध्यान रखें कि Enum.Parse दृढ़ता से टाइप नहीं है में रखना ... मुझे लगता है कि अपने परिदृश्य में कोई वास्तविक सीमा हो जाएगा। जैसा कि आप एनगु के उदाहरण से देख सकते हैं, आपको आउटपुट डालना होगा।

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

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