C# 4.0 在C中创建和传递类型参数#

C# 4.0 在C中创建和传递类型参数#,c#-4.0,asp.net-web-api,system.reflection,C# 4.0,Asp.net Web Api,System.reflection,我有一个方法采用ApiController类型参数,如下所示: private List<MethodInfo> GetMethods<T>() { ... } private List GetMethods() { ... } 我正在尝试使用以下方法创建要传递到此方法的类型: Type controller = Assembly.GetCallingAssembly().GetTypes().Where( type => type.Name

我有一个方法采用ApiController类型参数,如下所示:

private List<MethodInfo> GetMethods<T>()
{
  ...
}
private List GetMethods()
{
...
}
我正在尝试使用以下方法创建要传递到此方法的类型:

  Type controller = Assembly.GetCallingAssembly().GetTypes().Where(
      type => type.Name.Contains(schema) && type.IsSubclassOf(typeof(ApiController))).First();

  var collection = GetMethods<controller>();
Type controller=Assembly.GetCallingAssembly().GetTypes().Where(
type=>type.Name.Contains(schema)和&type.IsSubclassOf(typeof(ApiController))).First();
var collection=GetMethods();
嗯,“找不到类型或命名空间控制器…” 快把我逼疯了


我肯定有一些简单的东西我在这里看不到,但我想不出来

泛型类型参数必须是编译器识别的类型,而不是在运行时创建的类型
controller
是一个变量名,而不是编译器在编译时可以识别的类型,因此会出现错误

我想这就是您想要的:但是这种方法对我来说似乎有点困惑。那么,我如何从泛型类型创建ApiContoller类型的实例呢?下面是如何获取类型的构造函数:从那里,您可以对其调用
Invoke
:您还可以使用反射来调用类型上的方法。这里是一个概述(有时可能会很混乱):也许我还不够清楚。我将控制器的名称作为字符串。我想获取控制器的类型并将其传递给方法。除非在编译时知道泛型类型参数,否则不能使用泛型类型参数。我能想到的唯一方法是将其作为
type
类型的常规参数传递,并去掉泛型。