2009-09-03 19 views
18

के अंदर से व्युत्पन्न प्रकार का नाम प्राप्त करें मैं बेस क्लास में माउस ईवेंट को संभालने में समस्या निवारण कर रहा हूं। चूंकि ब्रेकपॉइंट्स वास्तव में माउस ईवेंट की समस्या निवारण के लिए अच्छी तरह से काम नहीं करते हैं, इसलिए मैं ईवेंट हैंडलर में कुछ डीबग आउटपुट जोड़ना चाहता हूं। हालांकि, मेरे लिए डीबग जानकारी में वास्तविक व्युत्पन्न वर्ग का नाम शामिल करना महत्वपूर्ण है क्योंकि बेस क्लास में इवेंट हैंडलिंग कोड बड़ी संख्या में व्युत्पन्न कक्षाओं द्वारा साझा किया जाता है और केवल कुछ ही समस्या प्रदर्शित करते हैं।सी # बेस क्लास

मैंने this.GetType().Name का उपयोग करने का प्रयास किया लेकिन यह आसानी से base वर्ग का प्रकार देता है। मैं निश्चित रूप से कक्षाओं को संशोधित करना शुरू कर सकता हूं और कह सकता हूं, व्युत्पन्न वर्ग type को बेस क्लास कन्स्ट्रक्टर में पास कर सकता है जहां यह इसे स्टोर कर सकता है लेकिन यह केवल एक अस्थायी आवश्यकता के लिए बहुत सारे बदलाव हैं। क्या बेस क्लास के भीतर व्युत्पन्न कक्षा के प्रकार को प्राप्त करने का कोई आसान तरीका है?

उत्तर

31

this.GetType().Name काम करना चाहिए। आपके पास व्युत्पन्न कक्षा नहीं हो सकती है। ।

8

this.GetType().Name हमेशा एक सशर्त ढंग से वर्तमान को क्रियान्वित करने का प्रकार, नहीं प्रकार है कि कोड है कि यह में लिखा गया था आप breakpoints हालांकि अनुकरण कर सकते हैं के नाम वापसी, Debugger.Break() का उपयोग कर:

if (this.GetType().Name == "Problematic type") 
    System.Diagnostics.Debugger.Break(); 
1

जब एक को ऊपर उठाने घटना, वास्तविक प्रेषक को प्रेषक संपत्ति को पास करना सुनिश्चित करें। श्रवण वर्ग में प्रेषक वस्तु को उस बच्चे वर्ग को सही ढंग से इंगित करना चाहिए जिसने घटना को उठाया था।

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