Tuple<string, List<MyObject>>
ist eine Option. Wenn Sie jedoch diese Paarung viel verwenden möchten, würde ich empfehlen, eine benutzerdefinierte Klasse zu erstellen, damit sie expliziter ist - entweder wie Sie getan haben oder indem Sie List<MyObject>
abgeleitet haben und die Zeichenfolge als Eigenschaft hinzufügen.
Wenn Sie „in scope“ arbeiten könnte man immer anonyme Typen machen:
var t = new { TheString = "", TheList = new List<MyObject>() };
var list = t.TheList;
var s = t.TheString;
Aber dies nur wirklich hat Nutzen im Rahmen eines Verfahrens. Der Compiler kann IntelliSense dafür geben, und es wird zur Kompilierungszeit stark typisiert.
Oder wenn Sie wirklich alle wollen gehen, verwenden ExpandoObject
von System.Dynamic
:
var expando = new ExpandoObject();
expando.List = new List<MyObject>();
expando.TheString = "";
Dies ist in-line getippt ohne IntelliSense-Unterstützung und wird das DLR berufen. ExpandoObject
verwendet einfach eine IDictionary<string, object>
unter der Haube, so ...
var dict = (IDictionary<string, object>)expando;
... gültig ist.
Die letzte Option ist eine kleine ironisch. Es wird funktionieren, aber die Entwicklungserfahrung ist im Vergleich zu anderen Optionen nicht ideal. Das heißt, wir verwenden ExpandoObject
in unserem Testcode, aber ich kann mich nicht erinnern, warum. Man kann nur hoffen, dass die Argumentation solide war, aber es war wahrscheinlich, dass ein Entwickler mit neuen Spielzeugen schwindlig wurde ...
Ist 'MyValue' unabhängig von den Werten in' MyList'? –
MyValue identifiziert MyList – miri
Würde es in dieser Situation funktionieren, die 'MyList' und' MyValue' zu einem 'Dictionary' hinzuzufügen, wie' Dictionary> '? –