Tuple<string, List<MyObject>>
是一個選項。然而,如果你打算使用這個配對很多,我會建議創建一個自定義的類,使其更加明確 - 或者像你所做的那樣,或者通過派生List<MyObject>
並添加字符串作爲屬性。
如果是「範圍內」的工作,你總是可以讓匿名類型:
var t = new { TheString = "", TheList = new List<MyObject>() };
var list = t.TheList;
var s = t.TheString;
但這只是真的有效益的方法的範圍。編譯器可以爲此提供IntelliSense,它在編譯時是強類型的。
或者,如果你真的想全力以赴,用ExpandoObject
從System.Dynamic
:
var expando = new ExpandoObject();
expando.List = new List<MyObject>();
expando.TheString = "";
這行中鍵入不帶任何的IntelliSense支持,並且將調用DLR。 ExpandoObject
只需使用引擎蓋下的IDictionary<string, object>
,所以......
var dict = (IDictionary<string, object>)expando;
...是有效的。
最後一個選項是小舌尖。它會起作用,但與其他選項相比,針對它的開發經驗並不理想。也就是說,我們在測試代碼中使用ExpandoObject
,但我不記得原因。一個人只能希望推理是健全的,但它可能是一個開發人員越來越頭暈的新玩具...
「MyValue」與「MyList」中的值無關嗎? – 2012-07-26 14:59:17
MyValue標識MyList – miri 2012-07-26 15:01:44
它會在這種情況下將'MyList'和'MyValue'添加到'Dictionary',比如'Dictionary>'嗎? –
2012-07-26 15:02:47