c# - 从反射类型实例化 IQueryable<>
问题描述
我有一个ClassName
字符串。我创建了List
对象的反射:
Type objectType = Type.GetType(ClassName);
var listObjectType = typeof(List<>);
var constructedListObjectType = listObjectType.MakeGenericType(objectType);
object listObject = Activator.CreateInstance(constructedListObjectType);
现在我listObject
想IQueryable<ClassName>
不是List<ClassName>
。
解决方案
不清楚你想做什么,但你要求了一些东西,你会得到你所要求的。
string className = "System.String";
Type type = Type.GetType(className);
var listType = typeof(List<>).MakeGenericType(type);
// This is a List<type> but it is easier to handle it through
// its non-generic IEnumerable interface
var list = (IEnumerable)Activator.CreateInstance(listType);
// Note that in truth this will return a IQueryable<type>
IQueryable queryable = Queryable.AsQueryable(list);
有两个重载Queryable.AsQueryable
。一个需要 aIEnumerable<T>
并返回对应IQueryable<>
的 ,另一个需要 a IEnumerable
,检查它实际上是 aIEnumerable<T>
并返回 aIQueryable<T>
向下转换为IQueryable
。我正在使用第二个。
推荐阅读
- java - 无法从 HTML Dom 获取值/文本。我使用了 Selenium WebDriver 的 getAttribute() 和 getText()
- python - 使用 Django 发送电子邮件的服务
- gatsby - Gatsby-image:为不同的分辨率提供正确的图像尺寸
- java - 如何根据场景使用@JsonView / @JsonBackReference / @JsonIdentityInfo 序列化所需的子元素
- css - 由于字体的 src 路径,Angular 构建在 Unix 系统中失败?
- python - 使用 FFMPEG 连接视频:Glitchy\Desync 输出
- python - 从具有相同df长度的numpy数组的字典中将列添加到pandas数据帧的最快/最佳方法?
- rvm - 无法在 mac os 10.15.6 catalina-openssl、ruby、zlib 中安装 ruby 2.2.4 失败错误
- database - 如何在 Microsoft Access 中转换凌乱的日期列(字符串)?
- swift - 当涉及协调器时,如何在 SwiftUI 视图与另一个视图之间进行通信?