Tuple<string, List<MyObject>>
एक विकल्प है। हालांकि, यदि आप इस युग्मन का उपयोग करने के लिए बहुत सारे का उपयोग करने जा रहे हैं, तो मैं इसके लिए एक कस्टम क्लास बनाने की सलाह दूंगा - जैसे आपने किया है, या List<MyObject>
प्राप्त करके और स्ट्रिंग को एक संपत्ति के रूप में जोड़कर।
आप "दायरे में" काम कर रहे हैं आप हमेशा गुमनाम प्रकार बना सकता है:
var t = new { TheString = "", TheList = new List<MyObject>() };
var list = t.TheList;
var s = t.TheString;
लेकिन यह केवल सच में एक विधि के दायरे में लाभ है। संकलक इसके लिए इंटेलिसेन्स दे सकता है और यह संकलन समय पर दृढ़ता से टाइप किया गया है।
या यदि आप वास्तव में सभी बाहर जाना चाहते हैं, System.Dynamic
से ExpandoObject
का उपयोग करें:
var expando = new ExpandoObject();
expando.List = new List<MyObject>();
expando.TheString = "";
यह किसी भी IntelliSense समर्थन के बिना इन-लाइन लिखा गया, और डीएलआर आह्वान करेंगे। ExpandoObject
बस हुड के नीचे एक IDictionary<string, object>
का उपयोग करता है, तो ...
var dict = (IDictionary<string, object>)expando;
... मान्य है।
अंतिम विकल्प छोटा जीभ-इन-गाल है। यह काम करेगा, लेकिन इसके खिलाफ विकास का अनुभव अन्य विकल्पों की तुलना में आदर्श नहीं है। उस ने कहा, हम अपने टेस्ट कोड में ExpandoObject
का उपयोग करते हैं, लेकिन मुझे याद नहीं है क्यों। कोई उम्मीद कर सकता है कि तर्क अच्छा था, लेकिन संभवतः एक डेवलपर नए खिलौनों के साथ गड़बड़ कर रहा था ...
स्रोत
2012-07-26 15:00:35
'MyValue' 'MyList' में मानों से स्वतंत्र है? –
MyValue MyList – miri
की पहचान करता है क्या यह 'MyList' और' MyValue' को 'शब्दकोश' में जोड़ने के लिए इस स्थिति में काम करेगा, जैसे 'शब्दकोश <स्ट्रिंग, सूची> '? –