इस तरह एक enum को देखते हुए:मैं जेनिक्स का उपयोग एनम से एक आईनेमरेबल बनाने का तरीका बनाने के लिए कैसे कर सकता हूं?
public enum City {
London = 1,
Liverpool = 20,
Leeds = 25
}
public enum House {
OneFloor = 1,
TwoFloors = 2
}
मैं मेरे एक IEnumerable देने के लिए निम्नलिखित कोड का उपयोग कर रहा:
City[] values = (City[])Enum.GetValues(typeof(City));
var valuesWithNames = from value in values
select new { value = (int)value, name = value.ToString() };
कोड बहुत अच्छा काम करता है लेकिन मैं काफी का एक बहुत के लिए यह करने के लिए है enums। क्या ऐसा कोई तरीका है जिससे मैं ऐसा करने का एक सामान्य तरीका बना सकता हूं?
समस्या यह है कि सी # जेनेरिक प्रकारों पर 'enum' बाधाओं की अनुमति नहीं देता है। आप जॉन स्कीट की [अनियंत्रित मेलोडी] (http://code.google.com/p/unconstrained-melody/) का उपयोग कर सकते हैं। – Adam
यदि आपको केवल रनटाइम पर 'IENumerable' की आवश्यकता है तो आप प्रतिबिंब का उपयोग कर सकते हैं। अन्यथा आप [templating] (http://msdn.microsoft.com/en-us/library/bb126445.aspx) और प्रतिबिंब का उपयोग करने पर विचार कर सकते हैं। – Guillaume