2013-12-17 16 views
1

我有需要的ApiController類型參數爲這樣的方法:創建和傳遞一個類型參數

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

我想創建一個類型使用通過這種方法如下:

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

    var collection = GetMethods<controller>(); 

好吧,「找不到類型或命名空間控制器...」 讓我發瘋!

我敢肯定,有一件容易的事,我在這裏沒有看到,但我無法弄清楚。

+0

我認爲你在找什麼:http://msdn.microsoft.com/en-us/library/system.object.gettype.aspx但這種方法似乎有點讓我困惑。 –

回答

1

通用類型參數必須是由編譯器識別的類型,而不是在運行時創建的類型。 controller是一個變量名稱,不是編譯器在編譯時可以識別的類型,因此是錯誤。 http://msdn.microsoft.com/en-us/library/0zk36dx2.aspx

+0

那麼,如何從泛型類型類型創建類型ApiContoller的實例? – iGanja

+0

這裏是如何獲得一個類型的構造函數:http://msdn.microsoft.com/en-us/library/h93ya84h(v = vs.110).aspx從那裏,你可以調用'Invoke':http ://msdn.microsoft.com/en-us/library/6ycw1y17(v = vs.110).aspx – edtheprogrammerguy

+0

您也可以使用反射來調用類型上的方法。這裏是一個概述(有時可能會混亂):http://msdn.microsoft.com/en-us/library/k3a58006.aspx – edtheprogrammerguy

相關問題