Matriz de objetos tipo dinámicos en C #

c# dapper dynamic

Pregunta

Forma abreviada: mi pregunta es similar a esta otra respuesta de stackoverflow, excepto que necesito el tipo de 'dinámico' en lugar de cadena, etc.

Cree dinámicamente una matriz de Tipo en C #

Básicamente, estoy ejecutando una consulta usando Dapper, que admite la asignación de objetos hasta 7 objetos, necesito 8.

Al hacer 7, parece que:

connection.Query<dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic>(sql, (obj1, obj2, obj3, obj4, obj5, obj6, obj7) => {...});

Al hacer 8 se supone que es:

connection.Query<dynamic>(sql, Type[], (objArray) => {...});

Donde Tipo [] es una matriz de tipos - en este caso, 8 tipos dinámicos.

He intentado todo tipo de cosas desde

var types = new Type[]{
    dynamic,
    dynamic,
    dynamic,
    dynamic,
    dynamic,
    dynamic,
    dynamic,
    dynamic
}

a

var types = new Type[]{
    Type.GetType("System.Dynamic.DynamicObject"),
    Type.GetType("System.Dynamic.DynamicObject"),
    Type.GetType("System.Dynamic.DynamicObject"),
    Type.GetType("System.Dynamic.DynamicObject"),
    Type.GetType("System.Dynamic.DynamicObject"),
    Type.GetType("System.Dynamic.DynamicObject"),
    Type.GetType("System.Dynamic.DynamicObject"),
    Type.GetType("System.Dynamic.DynamicObject")
}

Y varios otros. Nada de lo cual funciona

Estoy pensando que "dinámico" es más bien la ausencia de un tipo, que tal vez me estoy acercando a esto un poco mal?

De todos modos, alguna idea?

Respuesta popular

Referencia C #: dynamic

Tipo dynamic comporta como tipo de object en la mayoría de las circunstancias. Sin embargo, las operaciones que contienen expresiones de tipo dynamic no se resuelven o el tipo comprueba el compilador. El compilador empaqueta información sobre la operación, y esa información se usa luego para evaluar la operación en tiempo de ejecución. Como parte del proceso, las variables de tipo dinámico se compilan en variables de tipo object . Por lo tanto, la dynamic tipo existe solo en tiempo de compilación, no en tiempo de ejecución.

Entonces deberías pasar esto:

var types = Enumerable.Repeat(typeof(object), 8).ToArray();


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué