繁体   English   中英

我如何使用Variables将类型传递给泛型方法?

[英]How could I pass the type using Variables to the generic method?

我在c#中有一个通用的方法:

public IList<T> getList<T>();

当我把它称为下面的方式?

...
Type T1=metadata.ModelType;
getList<T1>();

...

我在编译时遇到错误。

我怎么能这样做? 我真的需要将类型作为变量传递给泛型方法!

泛型参数是一个类型参数:

getList<string>(); // Return a list of strings
getList<int>(); // Return a list of integers
getList<MyClass>(); // Return a list of MyClass

您没有使用类型但使用对象调用它。

正如Oded指出的那样,你不能按照你尝试的方式做到这一点,因为<T>不接受类型。 但是,您可以使用反射实现您想要的效果:

Type T1=metadata.ModelType;

MethodInfo method = GetType().GetMethod("getList");
MethodInfo genericMethod = method.MakeGenericMethod(new Type[] { T1 });

genericMethod.Invoke(this, null);

如果getList是静态方法,或者在另一个类中,则需要将typeof(...)替换为GetType() ,并使用...作为类的名称。

您不能:在您的示例中,T1是System.Type类的实例,而不是像IList这样的实际类型

暂无
暂无

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

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