2011-10-18 118 views
12

我目前正在編寫一個C#項目,我需要爲項目進行單元測試。對於我需要進行單元測試的其中一種方法,我使用通常從列表框的選定項目填充的ICollection。添加到收藏夾

當我爲它創建造成線路

ICollection icollection = null; //Initialise to an appropriate value 

如何創建這個ICollection的實例,並收集項目的方法的單元測試?

回答

25

ICollection是一個接口,你不能直接實例化。你需要實例化一個實現了ICollection的類;例如,List<T>。此外,ICollection interface沒有Add方法 - 您需要執行IListIList<T>

例子:

List<object> icollection = new List<object>(); 
icollection.Add("your item here"); 
+0

但是列表未實現ICollection。 Boardy要求參加ICollection。 – 2011-10-18 14:27:21

+0

@ Hungary1234'列表'實現'ICollection'後代的IList'。所以'列表'也是'ICollection'。 – Donut

+2

@Donut編寫評論的方式讓我覺得QED在它的末尾是必需的。 – DFTR

0

比方說,你將有一個字符串的集合,那麼代碼將是:

ICollection<string> test = new Collection<string>(); 
test.Add("New Value"); 
0

你可以做的是創建一個實現ICollection的,並從那裏利用它在您的測試類型。列表或集合可用於創建對象的實例。我想另一個問題是列表框的項目是什麼類型。使用.Add(...)方法將項目添加到列表或集合非常簡單。

List<T> list = new List<T>(); 
list.Add(item_from_your_list_box); 
list.Add(item2_from_your_list_box); 

有什麼更具體的你需要用這個集合做什麼?

3
List<Object> list = new List<Object>(); 
list.Add(object1); 
list.Add(object2); 
// etc... 

ICollection collection = list; 
// further processing of collection here. 

相反,一些評論,IList<T>確實實現ICollection,至少據我可以告訴。