gpt4 book ai didi

c# - 从类型的字符串表示中获取 List(T)

转载 作者:太空宇宙 更新时间:2023-11-03 19:17:48 28 4
gpt4 key购买 nike

我有一个类型的字符串表示,我需要获取该特定类型的列表。我正在尝试这个:

var string_rep = "Double";
var list = _context.Entity.ToList<Type.GetType(string_rep)>();

我收到“运算符 < 不能应用于类型方法组和 System.Type 的操作数”。正确的做法是什么?欣赏它。

最佳答案

如果类型直到运行时才知道,则无法将 list 变量键入到列表的实际泛型类型,因此以强类型开头的列表没有真正的好处.您也可以使用:

var list = _context.Entity.ToList<object>();

没有比使用该方法获得更多编译时支持的方法了。

虽然您可以使用反射来创建列表,例如使用:

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;
}

与第一个示例相比,使用这两个中的一个的唯一优势是,将不属于指定类型的项目添加到列表中会引发异常,而不是允许列表包含任何类型的对象。通常这并不重要,但最好让异常(exception)直接出现在您面前,而不是允许列表中不应存在的项目。

关于c# - 从类型的字符串表示中获取 List(T),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14900113/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com