2010-06-25 59 views
2

由於我無法對此post發表任何評論(只發布回答),我會發佈一個新問題。
我按照提到的帖子中的說明操作,但代碼會產生錯誤。
代碼:在IList中使用Type.GetType(string)<T>

Type t = Type.GetType(className); 
Type listType = typeof(List<>).MakeGenericType(t); 
IList list = (IList)Activator.CreateInstance(listType); 

錯誤:

Using the generic type 'System.Collections.Generic.IList' requires '1' type arguments

顯然,我不能只是狀態IList沒有任何類型的,所以我不知道究竟怎樣自提交作品的答案。

在此先感謝。

+2

你應該可以編輯你的其他問題嗎? – 2010-06-25 15:00:07

+0

這不是我的問題,但我有完全相同的問題。 :) – Dejan 2010-06-25 15:06:58

回答

9

你可以,你只需要一個不同的使用指令:

using System.Collections; 

您將使用非泛型IList的,而不是通用IList<T>這樣。

我相信這就是所引用答案的精神。

+2

超人可以從你身上學到如何在眨眼之間無處不在的地方。 :-p – LBushkin 2010-06-25 15:02:35

+0

是的,這是一個,非常感謝。 – Dejan 2010-06-25 15:09:05

0
+0

是的。不知何故,我跳過了那篇文章。在發佈問題之前,我進行了大量搜索。無論如何,我發佈的代碼就像一個魅力,我只需要使用指令,就像Jon發佈的那樣。感謝您的鏈接。 – Dejan 2010-06-25 15:18:25

1
Type t = Type.GetType(className); 
Type listType = typeof(List<>).MakeGenericType(t); 
IList list = (IList)Activator.CreateInstance(listType); 

應該這樣做。

使用IList接口檢索對象時必須強制轉換對象,但基礎List將強制只將類型爲T的對象添加到集合中。

相關問題