简短形式:我的问题类似于其他stackoverflow答案,除了我需要'动态'类型而不是字符串等
Dynamically create an array of Type in C#
基本上,我正在使用Dapper运行查询,Dapper支持最多7个对象的对象映射 - 我需要8个。
当做7时,它看起来像:
connection.Query<dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic, dynamic>(sql, (obj1, obj2, obj3, obj4, obj5, obj6, obj7) => {...});
当做8时应该是:
connection.Query<dynamic>(sql, Type[], (objArray) => {...});
其中Type []是一个类型数组 - 在本例中是8种动态类型。
我已尝试过各种各样的事情
var types = new Type[]{
dynamic,
dynamic,
dynamic,
dynamic,
dynamic,
dynamic,
dynamic,
dynamic
}
到
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")
}
以及其他各种各样的人。这些都不起作用。
我在想,因为'动态'是缺少一种类型,也许我正在接近这个有点错误?
无论如何,有什么想法吗?
答案 0 :(得分:1)
<强> C# Reference:
dynamic
强>在大多数情况下,类型
dynamic
的行为类似于object
类型。但是,包含类型dynamic
的表达式的操作未由编译器解析或进行类型检查。编译器将有关操作的信息打包在一起,该信息稍后用于评估运行时的操作。作为流程的一部分,动态类型的变量将编译为object
类型的变量。因此,类型dynamic
仅在编译时存在,而不是在运行时。
所以你应该通过这个:
var types = Enumerable.Repeat(typeof(object), 8).ToArray();