将类型传递给在泛型中使用的方法

时间:2019-01-31 15:42:29

标签: c# generics .net-core

我试图了解以下代码为何不起作用,以及如何对其进行更改以使其起作用。简而言之,我试图将Type传递给方法,然后在声明List时使用该Type。

public void TestMethod(Type type)
{
    List<type> items = new List<type>();
}

我得到一个错误:“'type'是一个变量,但像类型一样使用”

谢谢!

2 个答案:

答案 0 :(得分:3)

那将是:

public void TestMethod<T>()
{
    List<T> items = new List<T>();
}

关于理论,评论中的人很好地解释了这一点。您可以随时查看有关泛型的文档:)

答案 1 :(得分:1)

您不能没有反思。但是,您可以通过反射来实现。

string typeName = "System.String";
Type typeArg = Type.GetType(typeName);

Type genericClass = typeof(List<>);
Type newClass = genericClass.MakeGenericType(typeArg);

object created = Activator.CreateInstance(newClass);