2013-04-26 3 views
9

मैं इस तरह कोड का एक टुकड़ा है:मेरे क्लाइंट के बिना "डिज़ाइन टाइम घटक" होने के बिना वेब क्लाइंट से उत्तराधिकारी होना संभव है?

public class NoFollowWebClient : WebClient 
{ 
    protected override WebRequest GetWebRequest(Uri address) 
    { 
     var request = (HttpWebRequest)base.GetWebRequest(address); 
     request.AllowAutoRedirect = false; 
     return request; 
    } 
} 

जब भी मैं हालांकि एक .cs फ़ाइल में जोड़ना, विजुअल स्टूडियो 2012, यह अनंत ज्ञान है, एक "डिजाइन समय घटक" करने के लिए अपने सी # स्रोत फ़ाइल धर्मान्तरित । इसलिए, जब मैं अब फ़ाइल पर डबल क्लिक करता हूं, तो मेरे सी # कोड को देखने के बजाय, मैं देखता हूं "अपनी कक्षा में घटकों को जोड़ने के लिए, उन्हें टूलबॉक्स से खींचें और गुणों को सेट करने के लिए प्रॉपर्टी विंडो का उपयोग करें"।

मुझे पता है कि मैं राइट क्लिक कर सकता हूं और "कोड देख सकता हूं", लेकिन यह बेहद परेशान है।

क्या विजुअल स्टूडियो को यह मानने के लिए मजबूर नहीं किया गया है कि मैं एक घटक बना रहा हूं या मुझे उनके बेवकूफ दृश्य डिजाइनर की परवाह है जो मेरी कक्षा के लिए कोई उद्देश्य नहीं देता है?

+0

शायद 'csproj' फ़ाइल एक्सएमएल पर एक नज़र डालें। सुनिश्चित करें कि इसे '' प्रविष्टि की तरह चिह्नित किया गया है। संपादित करें: शायद इसे पूरी तरह से अलग तरह की फाइल के रूप में चिह्नित किया गया है; सुनिश्चित करें कि इसमें ' डिज़ाइनर 'बाल टैग नहीं है। –

उत्तर

11

समस्या यह है कि दृश्य स्टूडियो स्वचालित रूप से जैसे ही आप WebClient से विरासत के रूप में अपने .csproj फ़ाइल में

<SubType>Component</SubType> 

जोड़ देगा है। यहां तक ​​कि यदि आप इसे हटाने का प्रयास करते हैं, तो विजुअल स्टूडियो इसे फिर से जोड़ता है जब आप प्रोजेक्ट को फिर से खोलते हैं।

एक समाधान आपकी कक्षा में निम्नलिखित विशेषता को जोड़ना है। System.ComponentModel.Component साथ

[System.ComponentModel.DesignerCategory("Code")] 
+1

यह विजुअल स्टूडियो 2013 में काम नहीं करता है। – Kyle

+0

वीएस2013 में, मैंने निम्नलिखित थ्रेड से निम्नलिखित युक्तियों का उपयोग किया, और सब ठीक काम किया: 1. पूर्ण सिस्टम का उपयोग करें। कॉम्पोनेंट मॉडेल। डिज़ाइनर श्रेणी, उपयोग पर भरोसा न करें। 2. .csproj फ़ाइल संपादित करें और कक्षा के संकलन टैग से घटक को हटाएं (और सुरक्षित होने के लिए, मैंने संकलन टैग को स्वयं बंद करने के लिए संशोधित किया है, दूसरों की तरह)। यह आसानी से दुर्घटना से पूर्ववत हो जाता है, इसलिए यदि आप अपनी कक्षा को संशोधित करते हैं तो आप इसे एक से अधिक बार कर सकते हैं। – RobinHood70

1

कक्षा उनकी विरासत पथ पर स्वचालित रूप से दृश्य स्टूडियो के भीतर "घटक" के रूप में इलाज कर रहे हैं

(दुर्भाग्य से) WebClient अपनी विरासत रास्ते में System.ComponentModel.Component गया है: http://msdn.microsoft.com/en-us/library/system.componentmodel.component(v=vs.110).aspx

संबंधित मुद्दे