मेरे पास एक दिशा एनम है:एक एक्सटेंशन विधि एक Enum में एक समारोह जोड़ने का एकमात्र तरीका है?
Public Enum Direction
Left
Right
Top
Bottom
End Enum
और कभी-कभी मुझे उलटा होने की आवश्यकता होती है, इसलिए यह लिखना अच्छा लगता है:
SomeDirection.Inverse()
लेकिन मैं एक enum पर एक विधि नहीं डाल सकता! हालांकि, मैं इसे Extension Method (VS2008 +) जोड़ सकता हूं।
वीबी में, विस्तार के तरीके must be inside Modules। मुझे वास्तव में मॉड्यूल पसंद नहीं है, और मैं एक (मामूली) सरल वर्ग लिखने की कोशिश कर रहा हूं जिसे मैं एक ही फाइल में अन्य परियोजनाओं में प्लग करने के लिए साझा कर सकता हूं।
मॉड्यूल केवल फ़ाइल/नेमस्पेस स्तर में रह सकते हैं, इसलिए मेरे पास फ़ाइल के निचले हिस्से में एक है:
Public Class MyClass
'...'
End Class
Public Module Extensions
<Extension()> _
Public Function Inverse(ByVal dir As Direction) As Direction
'...'
End Function
End Module
यह काम करता है, और "यदि यह तोड़ा नहीं गया है, तो इसे ठीक न करें ", लेकिन मुझे यह जानना अच्छा लगेगा कि मैं गलत कर रहा हूं और कम बॉयलरप्लेट के साथ एक बेहतर तरीका है। शायद .NET 4 में?
अंत में, मुझे पता है कि मैं एक ऐसी संरचना लिख सकता हूं जो एक enum की तरह व्यवहार करता है, लेकिन यह और भी पीछे की ओर लगता है।
आप जो कर रहे हैं वह बिल्कुल सही है। माइक्रोसॉफ्ट भी इसका प्रस्ताव करता है: http://msdn.microsoft.com/en-us/library/bb383974.aspx। – VinayC
मुझे लगता है (अच्छा लगता है!), तो यह सही तरीका होना चाहिए। फिर भी, मुझे नहीं पता कि हम एक enum पर एक विधि क्यों नहीं डाल सकते हैं, ऐसा प्रतीत नहीं होता है कि यह कुछ तोड़ देगा। वीबी में –