<分区>
在下面的例子中,是否可以动态设置Classname类型参数?
UpdateAndSave<Classname>>().Execute(sql)
<分区>
在下面的例子中,是否可以动态设置Classname类型参数?
UpdateAndSave<Classname>>().Execute(sql)
最佳答案
如果你的类型来自一个对象,那么你可以使用dynamic
作弊。 - 劫持它来为你执行(和缓存,通过元编程等)类型解析。例如 - 如果您目前有:
object obj = ...
Type type = obj.GetType();
// now want to call UpdateAndSave<type>(...)
然后你可以这样做:
public void Voodoo<T>(T obj, string sql) {
UpdateAndSave<T>().Execute(sql);
}
只是:
object obj = ...
Voodoo((dynamic)obj, sql);
运行时将检测 obj
的类型,确定要使用的最佳重载(将是 Voodoo<TheActualType>(...)
),然后调用它。此外,它将缓存该类型的策略,因此下次它会很快(它只对每个唯一类型执行一次任何重要的工作)。
关于c# - 调用泛型方法并在运行时设置泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19834621/