Tuple<string, List<MyObject>>
è un'opzione. Tuttavia, se intendi utilizzare questo abbinamento molto, ti suggerirei di creare una classe personalizzata per renderla più esplicita - o come hai fatto tu, o derivando List<MyObject>
e aggiungendo la stringa come una proprietà.
Se si sta lavorando "in scope" si può sempre fare i tipi anonimi:
var t = new { TheString = "", TheList = new List<MyObject>() };
var list = t.TheList;
var s = t.TheString;
Ma questo ha veramente solo beneficio nell'ambito di un metodo. Il compilatore può fornire IntelliSense per questo ed è fortemente digitato al momento della compilazione.
Oppure, se si vuole veramente andare tutti fuori, utilizzare ExpandoObject
da System.Dynamic
:
var expando = new ExpandoObject();
expando.List = new List<MyObject>();
expando.TheString = "";
Questo sarà riportata in linea senza alcun supporto di IntelliSense, e richiamerà il DLR. ExpandoObject
utilizza semplicemente un IDictionary<string, object>
sotto il cofano, quindi ...
var dict = (IDictionary<string, object>)expando;
... è valido.
L'ultima opzione è una little tongue-in-cheek. Funzionerà, ma l'esperienza di sviluppo non è ideale rispetto ad altre opzioni. Detto questo, usiamo ExpandoObject
nel nostro codice di test, ma non riesco a ricordare perché. Si può solo sperare che il ragionamento sia valido, ma è probabile che uno sviluppatore diventi stordito con nuovi giocattoli ...
fonte
2012-07-26 15:00:35
È 'MyValue' indipendente dai valori in' MyList'? –
MyValue identifica MyList – miri
Funzionerebbe in questa situazione per aggiungere 'MyList' e' MyValue' a un 'Dictionary', come' Dictionary> '? –