在C#中创建和传递Type参数

时间:2013-12-17 03:53:17

标签: c#-4.0 asp.net-web-api system.reflection

我有一个采用ApiController Type参数的方法:

private List<MethodInfo> GetMethods<T>()
{
  ...
}

我正在尝试使用以下内容创建一个传递给此方法的Type:

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

  var collection = GetMethods<controller>();

好吧,“无法找到类型或名称空间控制器......” 让我疯了!

我确信有一些我在这里看不到的容易,但我无法弄明白。

1 个答案:

答案 0 :(得分:1)

通用类型参数必须是编译器可识别的类型,而不是在运行时创建的类型。 controller是变量名,不是编译器在编译时可以识别的类型,因此是错误。 http://msdn.microsoft.com/en-us/library/0zk36dx2.aspx