c# 4.0 - Access C# anonymous type object returned from a method -
किसी ने एक विधि लिखा है जो ऑब्जेक्ट प्रकार को रिटर्न करता है।
सार्वजनिक वस्तु GetProvider (दोहरी व्यक्ति आईडी) {// कुछ अन्य कोड यहां नए {FirstName = Convert.ToString (रीडर ["प्रथम नाम"]), LastName = Convert.ToString (रीडर [ अंतिम नाम"]) }; }
कोड के अलग-अलग भाग में, हम इस पुस्तकालय विधि का उपयोग करते हैं।
<पूर्व> var d = GetProvider (123); स्ट्रिंग fName = d.GetType ()। GetProperty ("FirstName")। GetValue (डी, रिक्त) .ओस्ट्रिंग ();
मैं इस कोड को कैसे सुधार सकता हूं या इसे सरल कर सकता हूं? मुझे लगता है कि उन्हें एक कक्षा बनानी चाहिए और ऑब्जेक्ट प्रकार के बजाय इसके एक ऑब्जेक्ट को लौटा दिया। इसके अलावा, मैंने कोड देखा है जो सी # 4 में गतिशील
का उपयोग करता है मैंने कोशिश की, लेकिन यह ऑब्जेक्ट प्रकार के साथ अच्छी तरह से काम नहीं किया। कोई विचार?
इस तरह गतिशील लागू करें:
गतिशील d = GetProvider (123); स्ट्रिंग fName = d.FirstName;
ऐसा लगता है कि यह हिस्सा मूल पोस्ट के लिए वास्तव में अप्रासंगिक है, क्योंकि ओपी को विधि के रिटर्न-प्रकार पर कोई नियंत्रण नहीं है। मैं इसे यहां छोड़ रहा हूं क्योंकि यह अभी भी सबसे अच्छा अभ्यास है और इसका पालन बहुसंख्य मामलों में किया जाना चाहिए, और एक आदर्श दुनिया में, मूल विधि के लेखक इसे पढ़ पाएंगे और अपने तरीके बदल सकते हैं। < / P>
लेकिन सामान्य तौर पर, मुझे बस एक प्रकार का बनाने के लिए परीक्षा होगी। ऐसा नहीं लगता है कि ऐसा करने के लिए एक ऐसा क्लास बनाने में बहुत अधिक प्रयास होता है जो आप चाहते हैं।
सार्वजनिक वर्ग व्यक्ति {सार्वजनिक स्ट्रिंग प्रथम नाम {प्राप्त करें; सेट; } सार्वजनिक स्ट्रिंग LastName {get; सेट; }}
फिर आप सब कुछ मजबूत-टाइप कर सकते हैं और आपको गतिशील
का उपयोग करने की आवश्यकता नहीं है मुझे नहीं लगता कि मुझे कभी भी गतिशील
के लिए सही उपयोग मिल गया है यह अच्छा है क्योंकि यह लिखना आसान और आसान है, लेकिन यह वास्तविक दुनिया उपयोगों के 99% में लंबे समय तक समस्याओं को पैदा करने का प्रयास करता है मैं यह नहीं कह रहा हूं कि इसे समाप्त कर दिया जाना चाहिए क्योंकि 1% उपयोगी है (मैं यहां गतिशील डेटा के क्रमवारण पर विचार कर रहा हूं, लेकिन यहां तक कि वहां भी मैं आमतौर पर स्ट्रिंग इंडेक्सर गुणों का उपयोग करता हूं), लेकिन आम तौर पर बोल रहा हूं, इसे दो बार इस्तेमाल करने से पहले सोचो यकीन है कि वहाँ एक बेहतर समाधान नहीं है अनन्य प्रकार LINQ प्रश्नों में उपयोगी होते हैं, जहां यह सब-क्षेत्र और संकलित है, लेकिन मैं उनको उपयोग करके स्कोप नहीं बदलेगा जब तक कि आप बिल्कुल के लिए नहीं होते हैं, और आप बहुत अच्छी तरह कभी नहीं करते हैं।
Comments
Post a Comment