我有一个类型的字符串表示,我需要获取该特定类型的列表.我在尝试这个:
var string_rep = "Double";
var list = _context.Entity.ToList<Type.GetType(string_rep)>();
Run Code Online (Sandbox Code Playgroud)
我得到"运算符<不能应用于类型方法组和System.Type的操作数".这样做的正确方法是什么?欣赏它.
由于list如果在运行时之前不知道该类型,则无法将变量键入列表的实际泛型类型,因此列表强类型开头并没有真正的好处.您也可以使用:
var list = _context.Entity.ToList<object>();
Run Code Online (Sandbox Code Playgroud)
除了使用该方法之外,您无法获得任何编译时支持.
虽然您可以使用反射来创建列表,例如通过使用:
public static IList ToList(this IEnumerable source, string typeName)
{
return ToList(source, Type.GetType(typeName));
}
public static IList ToList(this IEnumerable source, Type type)
{
var list = (IList)Activator.CreateInstance(
typeof(List<>).MakeGenericType(type));
foreach(object item in source) list.Add(item);
return list;
}
Run Code Online (Sandbox Code Playgroud)
在第一个示例中使用这两个中的一个的唯一优点是,向列表中添加不是指定类型的项将抛出异常,而不是允许列表包含任何类型的object.通常情况下这并不重要,但最好让异常面对允许不应该存在于列表中的项目.
| 归档时间: |
|
| 查看次数: |
152 次 |
| 最近记录: |