मैं किसी भी सिस्टम को परिवर्तित करने के लिए एक सामान्य विधि बनाना चाहता हूं। एनम व्युत्पन्न प्रकार को इसके संबंधित पूर्णांक मान में, कास्टिंग किए बिना और अधिमानतः स्ट्रिंग को पार्स किए बिना।System.Enum से बेस पूर्णांक में कैसे परिवर्तित करें?
जैसे, क्या मैं चाहता हूँ कुछ इस तरह है:
// Trivial example, not actually what I'm doing.
class Converter
{
int ToInteger(System.Enum anEnum)
{
(int)anEnum;
}
}
लेकिन यह काम करने के लिए प्रकट नहीं होता। Resharper रिपोर्ट करता है कि आप 'int' टाइप करने के लिए 'System.Enum' प्रकार की अभिव्यक्ति नहीं डाल सकते हैं।
अब मैं इस समाधान के साथ आया हूं लेकिन मुझे कुछ और कुशल होना चाहिए।
class Converter
{
int ToInteger(System.Enum anEnum)
{
return int.Parse(anEnum.ToString("d"));
}
}
कोई सुझाव?
मेरा मानना है कि यह संकलक है जो शिकायत कर रहा है, न कि Resharper। – Kugel
जरूरी नहीं है। मैं System.Enum पर एक विस्तार विधि है, और कभी कभी Resharper शिकायत करने का फैसला करता है: करने के लिए 'System.Enum' उदाहरण तर्क प्रकार 'Some.Cool.Type.That.Is.An.Enum' कनवर्ट नहीं कर सकता है जब यह निश्चित रूप से एक enum है अगर मैं कोड संकलित और चलाता हूं तो यह ठीक काम करता है। अगर मैं वीएस बंद कर देता हूं, रिशेर्पर कैश को उड़ाता हूं, और इसे वापस फायर करता हूं, तो सब कुछ ठीक हो जाने पर ठीक हो जाता है। मेरे लिए यह किसी प्रकार का कैश स्नफू है। उसके लिए भी वही हो सकता है। – Mir
@ मिर मैंने रीशेपर को "शिकायत" भी दी है। मेरे लिए वही तय करें। यह सुनिश्चित नहीं है कि इन प्रकारों को मिश्रित क्यों किया जाता है, लेकिन यह निश्चित रूप से संकलक नहीं है। – akousmata