一尘不染

在运行时设置通用类型

c#

我有一堂课

public class A<T>
{
   public static string B(T obj)
   {
       return TransformThisObjectToAString(obj);
   }
}

上面字符串的使用纯粹是示例性的。我可以像这样在已知/指定类型上调用静态函数:

string s= A<KnownType>.B(objectOfKnownType);

如果我事先不知道 T ,那么我如何进行此调用,而我有一个 Type类型 的变量来保存该类型。如果我这样做:

Type t= typeof(string);
string s= A<t>.B(someStringObject);

我收到此编译器错误:

Cannot implicitly convert type 't' to 'object'

阅读 230

收藏
2020-05-19

共1个答案

一尘不染

你不能 通用类型标识符必须在编译时知道。

编辑

与其他帖子一样,通过动态生成方法并调用它似乎有可能-当然存在危险。有关更多信息,请参见Thomas和Dathan的帖子。

2020-05-19