2011-02-08 14 views
23

क्या विजुअल स्टूडियो 2010 का उपयोग कर ToString() उत्पन्न करने का कोई तरीका है?क्या विजुअल स्टूडियो 2010 में कोई ToString() जनरेटर उपलब्ध है?

मैं वास्तव में हाथ से ऐसा नहीं करना चाहता!

[संपादित करें]

मैं अपने मॉडल का एक सरल स्ट्रिंग प्रतिनिधित्व के लिए देख रहा हूँ। पिछले आईडीई में * सरल टेम्पलेट्स और फील्ड चयन का उपयोग करके यूआई में ToString पीढ़ी को सक्षम किया गया है।

वर्तमान में समान पैटर्न में बराबर और हैशकोड के डिफ़ॉल्ट कार्यान्वयन की पेशकश की जाती है। मुझे उम्मीद थी कि ToString के लिए कुछ समान था।

यह डिफ़ॉल्ट रूप से नहीं लगता है - प्रतिक्रियाओं के लिए धन्यवाद!

(मेरी पहली .net परियोजना * यह है)

+1

किस आधार यह स्ट्रिंग प्रतिनिधित्व उत्पन्न करनी चाहिए पर? – anthares

+1

रीशेपर में है, मैं इसके बिना उपयोगकर्ता वीएस है इसलिए मैं वास्तव में नहीं जानता कि कोई है या नहीं;) – Eduard

+1

क्या आपका मतलब 'ओवरराइड' है? यदि ऐसा है तो बस 'ओवरराइड', स्पेस टाइप करें और सूची से 'ToString' चुनें - यह आपके लिए विधि निकाय उत्पन्न करेगा। –

उत्तर

7

आप हर बॉयलरप्लेट कोड के लिए अपने स्वयं के कस्टम टुकड़ा बना सकते हैं और Intellisence
से पहुंच सकते हैं यहाँ एक अच्छा ट्यूटोरियल http://msdn.microsoft.com/en-us/library/ms165392.aspx

है प्रतिस्थापन साथ के टुकड़े को बनाने का तरीका अच्छी तरह से देखने लो। आप काफी सामान्य संरचनाएं बना सकते हैं।

+1

मुझे नहीं पता कि यह समाधान क्यों स्वीकार किया गया था। यह सबसे अच्छी तरह से, प्रासंगिक रूप से संबंधित जानकारी प्रदान करता है। स्निपेट्स में ओपी अनुरोध करने की शक्ति नहीं है। – erich2k8

-3

के बाद से अधिरोहित ToString() विधि के तर्क आपके व्यवसाय की आवश्यकताओं पर निर्भर करेगा, केवल एक चीज मैं कल्पना कर सकता एक ऐड-इन जो बनाता है को कॉल करने के लिए खाली ToString() ओवरराइड करें, यदि आप इसकी सामग्री को कस्टमाइज़ नहीं करते हैं तो इसे ऐसा करने का कोई अर्थ नहीं है।

यदि आप सार्वजनिक ओवरराइड टाइप करना शुरू करते हैं, तो दृश्य स्टूडियो पहले से ही सी # में बहुत मदद करता है।

+2

आपको 'public' भी लिखना नहीं है। यदि आप ओवरराइड से प्रारंभ करते हैं और ड्रॉपडाउन से 'ToString' विधि का चयन करते हैं, तो सार्वजनिक स्वचालित रूप से जोड़ा जाएगा। –

+0

हाय, पता नहीं था। –

+4

"केवल एक चीज जिसे मैं कल्पना कर सकता हूं" ... ग्रहण की तरह मुद्रित स्थानीय चर के बारे में कैसे? मैं नहीं देखता कि यह कल्पना से परे कैसे होगा। – eis

-3

ToString()object पर बैठने की एक विधि है, इसलिए आपको इसे अपने सभी वर्गों में जोड़ने की आवश्यकता नहीं है, केवल तभी जब आपको व्यवहार को ओवरराइड और बदलना होगा।

+4

ऐसा लगता है जैसे आप बिंदु चूक गए। लैनी पूछ रही है कि वीएस ग्रहण और नेटबीन जैसी विधि को स्वतः उत्पन्न करेगा या नहीं। आप हमेशा डीबगर मौजूद होने पर भरोसा नहीं कर सकते हैं, और ऑब्जेक्ट की स्थिति को लॉग में डालने में सक्षम होना जरूरी है। –

1

यदि आप अपनी खुद की ToString विधि नहीं लिखते हैं, तो Object आपके लिए एक प्रदान करता है (हालांकि बहुत उपयोगी नहीं है, क्योंकि यह केवल नामस्थान का नामस्थान और नाम लौटाता है)।

अन्यथा, आपको इसे स्वयं बनाना होगा, क्योंकि आईडीई संभवतः यह नहीं जान सकता कि आप किसी ऑब्जेक्ट की ToString विधि के रूप में आउटपुट करना चाहते हैं।

+15

ग्रहण और नेटबीन आपके स्थानीय चर के डंप की पेशकश करते हैं, जो मुझे लगता है कि वह पूछ रही है। मैं एक ही जवाब की तलाश में इस धागे पर आया था। –

0

आप अपनी वस्तु के बेहतर प्रतिनिधित्व की जरूरत है, जबकि डिबगिंग आप उपयोग कर सकते DebuggerDisplayAttribute:

[DebuggerDisplay("Count = {count}")] 
class MyHashtable 
{ 
    public int count = 4; 
} 

यह ToString अधिभावी से जल्दी हो सकता है, लेकिन यह अभी भी आप क्षेत्रों का चयन नहीं करता है, आपके पास उन्हें टाइप करने के लिए।

2

मेजर दर्द है कि VS 2010 यहां तक ​​कि एक autogenerate ToString विधि नहीं है, वाक्य रचना जावा जहाँ मैं Ecilpse इस्तेमाल किया ToString उत्पन्न करने के लिए और फिर वी.एस. में चिपकाया के काफ़ी करीब है ...

4

यह नहीं है बॉक्स के बाहर वीएस पर मौजूद है, लेकिन यह ReSharper plugin पर है, अगर आप इसे स्वयं लागू नहीं करना चाहते हैं। प्लगइन वाणिज्यिक है, लेकिन मुझे व्यक्तिगत रूप से लगता है कि यह पैसे के लायक है।

रीशेर्पर के साथ, यह alt + ins -> ओवरराइडिंग सदस्यों -> कक्षा का नाम कर्सर पर है, जबकि टॉस्ट्रिंग होगा।

+0

alt + ins -> स्वरूपण सदस्य आर # 7.1 में एक ToString भी उत्पन्न करता है। ReSharper एक अनिवार्य उपकरण है। – Travis

3

शायद आपको AutoCode 4.0 पर एक नज़र डालना चाहिए। यह एक विजुअल स्टूडियो एक्सटेंशन है जो इसके साथ कुछ स्निपेट लाएगा।

उदाहरण के लिए यदि आप अपने वर्ग के भीतर कहीं बस tostr लिख सकता है और Ctrl +प्रेस दर्ज करें और यह स्वचालित रूप से ToString() विधि उस वर्ग के सभी सार्वजनिक संपत्तियों concatenates उत्पन्न होगा।

+1

लेकिन इच्छा है कि वीएस 2013 के लिए एक था :-( –

3

आप उपयोग कर सकते हैं उत्पन्न करके इस का समर्थन करता है StatePrinter project

class AClassWithToString 
{ 
    string B = "hello"; 
    int[] C = {5,4,3,2,1}; 

    // Nice stuff ahead! 
    static readonly StatePrinter printer = new StatePrinter(); 
    public override string ToString() 
    { 
    return printer.PrintObject(this); 
    } 
} 
+0

मुझे लगता है कि यह एक अच्छा सुझाव है और इसे एक उथल-पुथल दिया। हालांकि, किसी भी व्यक्ति से सावधान रहें जो इसे सी # के बजाय वीबी से करने की कोशिश कर रहा है: http://stackoverflow.com/ क्यू/35092412/165164 –

1
कोड परावर्तन आप वास्तव में एक ToString() विधि कोड कर सकते हैं

:

public string ToString(MyObjectClass object) 
{ 
    Type MyObjectType = object.GetType(); 
    PropertyInfo[] propertyInfoList = MyObjectType.GetProperties(); 
    string result = ""; 
    foreach(PropertyInfo propertyInfo in propertyInfoList) 
    { 
     result += string.Format("{0}={1} ", propertyInfo.Name, propertyInfo.GetValue(object)); 
    } 

    return result; 
} 
संबंधित मुद्दे