2012-07-26 22 views
5

मेरे पास बहुत सारी वस्तुओं के साथ एक सूची है List<MyObjects> - मैं इस सूची के माध्यम से पुन: प्रयास कर रहा हूं और वस्तुओं को पढ़ रहा हूं। सब ठीक है। मैंने अभी अभी स्वीकार किया है, अगर यह इस सूची में 1 और विशेष मूल्य जोड़ सकता है तो यह बहुत ही बढ़िया होगा - ऑब्जेक्ट नहीं, केवल कुछ मान (एक स्ट्रिंग)।एक सूची में संपत्ति जोड़ें?

मैं अब

class Needless 
{ 
    public List<MyObjects> MyList { get; set; } 
    public string MyValue { get; set; } 
} 

लेकिन इम कि बचने की कोशिश कर की तरह एक वर्ग बना सकते हैं। मुझे वास्तव में इनपुट के साथ 1 स्ट्रिंग की आवश्यकता है प्रत्येक List<MyObjects> कोई विचार?

+0

'MyValue' 'MyList' में मानों से स्वतंत्र है? –

+0

MyValue MyList – miri

+0

की पहचान करता है क्या यह 'MyList' और' MyValue' को 'शब्दकोश' में जोड़ने के लिए इस स्थिति में काम करेगा, जैसे 'शब्दकोश <स्ट्रिंग, सूची > '? –

उत्तर

8

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 का उपयोग करते हैं, लेकिन मुझे याद नहीं है क्यों। कोई उम्मीद कर सकता है कि तर्क अच्छा था, लेकिन संभवतः एक डेवलपर नए खिलौनों के साथ गड़बड़ कर रहा था ...

+2

+1 बस यह सुझाव देने जा रहा था। – mellamokb

2

आप सूची का उत्तराधिकारी बना सकते हैं और बस अपनी संपत्ति जोड़ सकते हैं, यह एक और कक्षा

के अंदर सूची की तुलना में थोड़ा क्लीनर है
0

आप अपनी जरूरतहीन कक्षा के साथ एक सूची कार्यान्वयन बढ़ा सकते हैं। इस तरह आप अभी भी अपनी सूची को एक सूची के रूप में देख सकते हैं।

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