Tuple<string, List<MyObject>>
es una opción. Sin embargo, si vas a usar este emparejamiento mucho, te aconsejaría crear una clase personalizada para que sea más explícito, como lo has hecho, o derivando List<MyObject>
y agregando la cadena como una propiedad.
Si está trabajando "en su alcance" siempre se puede hacer que los tipos anónimos:
var t = new { TheString = "", TheList = new List<MyObject>() };
var list = t.TheList;
var s = t.TheString;
Pero esto en realidad sólo tiene beneficios en el ámbito de un método. El compilador puede dar IntelliSense para esto y está fuertemente tipado en tiempo de compilación.
O si realmente quieres ir a por todas, utilice ExpandoObject
de System.Dynamic
:
var expando = new ExpandoObject();
expando.List = new List<MyObject>();
expando.TheString = "";
Esto se escribe en línea sin ningún tipo de apoyo de IntelliSense, e invocará el DLR. ExpandoObject
simplemente utiliza un IDictionary<string, object>
bajo el capó, así que ...
var dict = (IDictionary<string, object>)expando;
... es válido.
La última opción es pequeña irónica. Funcionará, pero la experiencia de desarrollo en su contra no es ideal en comparación con otras opciones. Dicho esto, usamos ExpandoObject
en nuestro código de prueba, pero no puedo recordar por qué. Uno solo puede esperar que el razonamiento sea sólido, pero es probable que un desarrollador se maree con juguetes nuevos ...
¿'MyValue' es independiente de los valores de' MyList'? –
MyValue identifica MyList – miri
¿Funcionaría en esta situación para agregar 'MyList' y' MyValue' a 'Dictionary', como' Dictionary> '? –