c# - Fixing .NET code generation of properties for user controls -
मेरे पास एक प्रकार की संपत्ति है IEnumerable & lt; SomeClassIWrote & gt;
उपयोगकर्ता नियंत्रण में जब मैं एक जीयूआई में इस नियंत्रण का उपयोग करता हूं, तो .डीसाइग्गर सीएस फ़ाइल में लाइन होती है:
theObject.Property = नया SomeClassIWrote [0];
किसी कारण के लिए कंपाइलर चेतावनी का कारण बनता है:
वस्तु का प्रकार 'SomeClassIWrote []' को 'System.Collections.Generic टाइप करने के लिए परिवर्तित नहीं किया जा सकता। IEnumerable`1 [SomeClassIWrote] '।
यह मेरे लिए एक रहस्य है क्योंकि मैं हर समय के रूप में एरेयंस पास करता हूं, और कंपाइलर ने कभी भी शिकायत नहीं की है।
इसकी कीमत क्या है, मेरे पास एक डिफ़ॉल्ट है संपत्ति के लिए निर्दिष्ट शून्य के मूल्य, लेकिन मैं एक डिफ़ॉल्ट मान सेट करने से पहले मुझे एक ही त्रुटि मिली।
मैं इसे कैसे ठीक कर सकता हूं ताकि विजुअल स्टूडियो शिकायत न करे और मुझे हर बार अनदेखा करने और जारी रखने के लिए कहें डिजाइनर को ऊपर खींचें?
संपत्ति के लिए कोड:
[डिफ़ॉल्टवॉल (नल)] सार्वजनिक आईएनआईमेरेबल & lt; SomeClassIWrote & gt; द प्रॉपर्टी {रिटर्न _ द प्रॉपर्टी; } सेट {if (value == null) {_theProperty = new SomeClassIWrote [] {}; } अन्य {_theProperty = value; }}}}
सबसे पहले, क्या आप उसे इसे सेट करने में सक्षम होना चाहते हैं डिजाइनर?
यदि नहीं, तो निम्नलिखित विशेषताओं को जोड़ें:
[ब्राउजबल (गलत)] [डिजाइनरसिरियालाइजेशन विसनीयता (डिज़ाइनरसिरियालाइजेशन वीजबिलिटी.हिंड)]
< P> यदि आप डिजाइनर में सेट करना चाहते हैं, तो मैं यह सुनिश्चित करने के लिए कि आपका काम करता है, SomeClassIWrote []
के रूप में अपनी कक्षा को कोशिश कर रहा हूँ। क्या यह यहां एक IEnumerable का उपयोग करना महत्वपूर्ण है? जैसा कि आप कहते हैं, आप एरे को आईनेमरेबल्स के रूप में पास कर सकते हैं।
मुझे संदेह है कि डिजाइनर के अंदर शायद कुछ प्रतिबंध हैं, जिनसे मुझे समझने वाले लोग जानते हैं ...
और अगर आप वास्तव में एक IEnumerable संपत्ति चाहते हैं, तो आप अपनी सरणी को बेनकाब कर सकते हैं एक IEnumerable, लेकिन अपने सरणी को एक डिजाइनर-अनुकूल बैकिंग फ़ील्ड के रूप में रखें।
Comments
Post a Comment