यह क्यों है? मुझे लगता है कि यह है वास्तव में कुछ विस्तारित विधियों को बंद करने में सक्षम होने के लिए केवल मेरी कक्षाओं में से एक के भीतर उपयोग किया जा सकता है।नेस्टेड स्थैतिक कक्षाओं में एक्सटेंशन विधियों की अनुमति नहीं है?
कारण मैं इन विस्तार तरीकों चाहते हैं, क्योंकि यह है: स्पष्टीकरण के लिए पी
: नहीं वास्तव में हर जगह उपलब्ध कुछ विस्तार तरीकों करना चाहते हैं ... और वे ऐसा नियमित रूप से स्थिर तरीकों की तुलना में बहुत अच्छे लग रहे मैं एक फॉर्म बढ़ा रहा हूं, जिसमें डेटाग्रिड व्यू है। और मैं इस तरह की लाइनों के बहुत थक गया हो रही है:
foreach(var row in grid.Rows.OfType<DataGridViewRow>().Where(r => (bool) r.Cells[checkBoxColumn.Index].Value))
foreach(var row in grid.SelectedRows.OfType<DataGridViewRow>().Where(r => (bool) r.Cells[checkBoxColumn.Index].Value))
एक विस्तार विधि चाहेंगे ताकि मैं सिर्फ दूसरे शब्दों में कर सकता है
foreach(var row in grid.Rows.CheckedRows())
foreach(var row in grid.SelectedRows.CheckedRows())
तो, यह विस्तार विधि बिल्कुल उपयोगी नहीं होगा इस कक्षा के बाहर। लेकिन यह कोड को बहुत साफ कर देगा। निश्चित रूप से नियमित तरीकों को भी बना सकते हैं, और यही वह है जो मैंने कर दिया, क्योंकि यह संभव नहीं था।
आयनवे, मैं जानना चाहता था कि किसी के पास कुछ अच्छे तर्क थे कि क्यों उन्होंने इस तरह के प्रतिबंध लगाने का विकल्प चुना था, जहां एक्सटेंशन विधियों का उपयोग किया जा सकता था। एक स्थिर वर्ग में होना चाहिए कुल समझ में आता है। एक नेस्टेड स्थैतिक वर्ग में नहीं हो सकता है ... कम से कम ...
ऐसा लगता है कि इनमें से कोई भी जवाब एक अच्छा तकनीकी कारण नहीं देता है कि यह क्यों नहीं किया जा सकता है। –
आप की तरह, मैं एक्सटेंशन विधि वाक्यविन्यास को बहुत पसंद करता हूं। SomeThing.HasSomeCondition() HasSomeCondition (SomeThing) से बेहतर है। – Mir