繁体   English   中英

从类型的字符串表示形式获取List(T)

[英]Getting a List(T) from a string representation of a type

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

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

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

如果无法在运行时才知道列表的实际通用类型,则无法将list变量键入该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;
}

与第一个示例相比,您将使用这两个中的一个唯一的优势是,向列表中添加非指定类型的项目会引发异常,而不是允许列表包含任何类型的object 通常这并不重要,但最好是允许您将异常项放在列表中,以免出现异常。

您可以使用反射在运行时执行此操作。 请参阅以下帖子:

C#泛型列表<T>如何获取T的类型?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM