c# - 调用泛型方法并在运行时设置泛型类型

标签 c# asp.net-mvc generics

<分区>

在下面的例子中,是否可以动态设置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/

相关文章:

c# - 如何使用asp.net中的页面URL以编程方式读取html页面的内容?

c# - 隐藏在设计模式下使用它的页面中的母版页内容

C# MySql 连接。如何传递图像?

ASP.NET MVC - 角色提供程序的替代方案?

c# - 将通用 List/Ienumerable 转换为 DataTable?

C#转换列表在linq查询中抛出异常

asp.net-mvc - Azure .Net Framework 4.8 向后兼容性

asp.net-mvc - Unity.MVC4惰性<T>在ASP.NET MVC应用程序中不起作用

java - 将通用服务与其实现和子类型绑定(bind)

pointers - Rust,Copy Trait 在使用泛型时不适用于类型