如何将多个类型变量传递给泛型类型变量T?

tobias233

新成员
已加入
2015年11月12日
留言内容
1
编程经验
5-10
您好:joyous :,
我正在做C#半年了。今天,我想在一个类中以如下名称调用这样的方法"A":

C#:
public T TheMethod<T>(IRestResponse response)    {
      ...
    }

在编译时,T是未知的。
C#:
var theType = typeof(B);

所以我尝试了以下方法:
C#:
var gMethod= typeof(A).GetMethod("TheMethod");
var rExecution = gMethod.MakeGenericMethod(theType);
var params = ...;
var result = (C)rExecution.Invoke(new A(), new object[] { params });

上面的代码可以按以下形式执行方法:
C#:
public C TheMethod<T>(IRestResponse response)    {
      ...
    }

但是现在我要执行该方法,这样:
C#:
public List<T> TheMethod<T>(IRestResponse response)    {
      ...
    }

我该如何处理?感谢帮助!
 

约翰·H

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
1,021
地点
挪威
编程经验
10+
如果您要使结果列表<T>您可以在编译时编码的一种变量,那么我认为唯一的解决方案是使用接口,例如将T约束为IReturn并返回一个List<IReturn>,然后可以将其投射到。
或者,如果项目的类型无关紧要,则可以将结果强制转换为System.Collections.IList。
 
最佳 底部