2011-10-18 31 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,至少据我可以告诉。