Tuple<string, List<MyObject>>
to opcja. Jednakże, jeśli zamierzasz używać tej pary partii, radziłbym utworzyć niestandardową klasę, aby była bardziej wyraźna - tak jak zrobiłaś, lub wyprowadzając List<MyObject>
i dodając ciąg jako właściwość.
Jeśli pracujesz „w zakresie” zawsze można zrobić anonimowe typy:
var t = new { TheString = "", TheList = new List<MyObject>() };
var list = t.TheList;
var s = t.TheString;
Ale to tylko naprawdę ma korzyści w zakresie metody. Kompilator może dać IntelliSense do tego i jest mocno wpisany podczas kompilacji.
A jeśli naprawdę chcesz iść na całość, należy ExpandoObject
z System.Dynamic
:
var expando = new ExpandoObject();
expando.List = new List<MyObject>();
expando.TheString = "";
To jest wpisane w jednej linii bez wsparcia IntelliSense i wywoła DLR. ExpandoObject
prostu wykorzystuje IDictionary<string, object>
pod maską, więc ...
var dict = (IDictionary<string, object>)expando;
... jest prawidłowy.
Ostatnia opcja to mały język:. To zadziała, ale doświadczenie programistyczne przeciw niemu nie jest idealne w porównaniu z innymi opcjami. To powiedziawszy, używamy ExpandoObject
w naszym kodzie testowym, ale nie pamiętam dlaczego. Można tylko mieć nadzieję, że rozumowanie było dobre, ale prawdopodobnie deweloper wpadł w szał z nowymi zabawkami ...
Czy 'MojaValue' jest niezależna od wartości w' MyList'? –
MyValue identyfikuje MyList – miri
Czy to działa w tej sytuacji, aby dodać 'MyList' i' MyValue' do 'Dictionary', np.' Dictionary> '? –