c# - 如何将字符串转换为类引用并将其发送到泛型类
问题描述
我意识到有些问题听起来与我的相似,但它们并没有解决我的问题。所以我想将字符串更改为类引用,但我不能更改为类型、动态或任何类型的变量,因为那样它不适用于我的泛型类。
请注意,当我使用有效的类引用时,代码有效。但是我在数据库中有很多表,如果它可以更通用,那将有很大帮助。
通用类,在这里一切正常
private class GenericController<T>
{
private CoreGradingDBEntities db = new CoreGradingDBEntities();
public dynamic Get(string Table, string Field, string id)
{
dynamic str = db.Database.SqlQuery<T>("SELECT * FROM " + Table + " WHERE " + Field + " = '" + id + "';").ToList();
return str;
}
}
我从中调用泛型类的方法。当我使用有效的类引用时,它可以工作。所以下面的代码确实有效。
[Route("api/Values/Table/Field/id")]
public dynamic Get(string Table, string Field, string id)
{
GenericController<Account> generic = new GenericController<Account>();
dynamic d = generic.Get(Table, Field, id);
return d;
}
我想要做的是替换帐户参考。我已经尝试过了,但它把它变成了一个“变量”。Table 参数是我想要的字符串形式的类引用。下面的代码是错误的,但你明白我想要做什么。
[Route("api/Values/Table/Field/id")]
public dynamic Get(string Table, string Field, string id)
{
Type type = Type.GetType(Table);
GenericController<type> generic = new GenericController<type>(); //Compiler complaining
dynamic d = generic.Get(Table, Field, id);
return d;
}
任何帮助将非常感激。谢谢!
解决方案
我相信泛型类型参数必须在编译时指定。看到这个问题
如果你真的想这样做,你将不得不诉诸反思
推荐阅读
- javascript - Vuex getter 未定义但状态出现在控制台中
- r - R Shiny 如何选择输入表单数据框列(反应式)
- python - 使用python将文件上传到s3时更改元数据
- node.js - 在 GET 请求中发送 base64 数据的问题
- parameters - SAS宏参数中的换行符丢失
- css - 如何在 SCSS 中使用类名定位标签
- javascript - 如果尚未选择上一个下拉菜单,我试图阻止某人填写文本输入
- eclipse - 文件夹未在 Eclipse 的项目视图中列出 - 防止将文件夹标记为“源文件夹”
- java - WSDLToJava 错误:找不到 Velocity 模板文件:org/apache/cxf/tools/wsdlto/frontend/jaxws/template/fault.vm
- jquery - 从 iframe 上播放的视频中捕获图像帧