2009-05-18 14 views
10

डीबगिंग क्या किसी के पास सी # ऑब्जेक्ट प्रारंभकर्ता ब्लॉक में अपवादों को डीबग करने के लिए कोई सुझाव है? ऑब्जेक्ट प्रारंभकर्ता वाक्यविन्यास मूल रूप से सभी या कुछ भी नहीं है, जो LINQ क्वेरी के अंदर समस्या निवारण के लिए विशेष रूप से कठिन बना सकता है। वस्तु को अलग तरीके से तोड़ने से कम, क्या मैं यह देखने के लिए कुछ भी कर सकता हूं कि कौन सा संपत्ति सेटटर अपवाद फेंक रहा है?एक सी # ऑब्जेक्ट प्रारंभकर्ता

उत्तर

13

संपत्ति सेटर्स पर कदम उठाने के विकल्प को अक्षम करना [गुणों और ऑपरेटरों (केवल प्रबंधित) पर कदम] आप संपत्ति सेटर्स में कदम रखने की अनुमति दे सकते हैं।

अन्यथा, सबसे अच्छा विकल्प अक्सर इसे तोड़ने और LINQ कथन के बाहर इसे डीबग करने के लिए होता है। आप अपने प्रारंभिक पैरामीटर को linq में एक अनाम प्रकार में लपेट सकते हैं, और डिबगिंग उद्देश्यों के लिए अपने linq कथन के बाहर अपनी ऑब्जेक्ट का निर्माण कर सकते हैं।

+0

क्या आप "प्रारंभिक प्रकार पैरामीटर को अनाम प्रकार में लपेटकर" का अर्थ समझ सकते हैं? क्या मैं अनाम प्रकार को कन्स्ट्रक्टर को किसी भी तरह से पास कर दूंगा, या सिर्फ एक उपयोगिता फैक्ट्री विधि तैयार करूंगा जो गुणों को आवंटित करेगी? – technomalogical

+0

अभी, इसकी आवाज़ से, आप अपने ऑब्जेक्ट्स बनाने के लिए अपने क्वेरी परिणाम का उपयोग कर रहे हैं, और आप मानते हैं कि त्रुटि उत्पन्न हो रही है (ऑब्जेक्ट निर्माण पर)। इसके बजाय, केवल क्वेरी परिणाम लौटाएं, फिर अपनी ऑब्जेक्ट्स को बाद में एक अलग चरण में बनाएं (परिणामों का उपयोग करके), ताकि आप ऑब्जेक्ट प्रारंभकर्ता ब्लॉक से बच सकें। –

+0

लेकिन क्या किसी भी प्रकार किसी अज्ञात प्रकार को किसी कन्स्ट्रक्टर को पास करना संभव है? – wcm

1

ऑब्जेक्ट प्रारंभकर्ता ब्लॉक से इसे तोड़ें जहां आपकी प्रत्येक संपत्ति अलग-अलग होती है। इस तरह आप वास्तव में कोड में कदम उठा सकते हैं।

4

क्या आपने अपवाद फेंकने पर ब्रेक करने के लिए वीएस सेट अप किया है? (डिफ़ॉल्ट केवल अनचाहे अपवादों को तोड़ना है)। डीबग | अपवाद, और "फेंक दिया" की जांच करें।

वह अकेला शायद आपके प्रश्न का उत्तर नहीं है, लेकिन यह डिबगिंग में मदद कर सकता है।

इसके अलावा, आप अस्थायी रूप से प्रारंभकर्ता ब्लॉक (केवल डीबगिंग के लिए) से अपना कोड तोड़ सकते हैं, और फिर यदि आप चाहते हैं, तो कोड कोड करने के बाद आप प्रारंभकर्ता ब्लॉक को दोबारा स्थापित कर सकते हैं।