我目前正在编写一个C#项目,需要为该项目进行单元测试。在我需要进行单元测试的方法中,我使用了一个ICollection,通常是通过列表框中选择的项目来填充它。
当我为该方法创建一个单元测试时,它会生成以下代码行:
ICollection icollection = null; //Initialise to an appropriate value
我该如何创建这个ICollection的实例并向集合中添加一个元素?
我目前正在编写一个C#项目,需要为该项目进行单元测试。在我需要进行单元测试的方法中,我使用了一个ICollection,通常是通过列表框中选择的项目来填充它。
当我为该方法创建一个单元测试时,它会生成以下代码行:
ICollection icollection = null; //Initialise to an appropriate value
我该如何创建这个ICollection的实例并向集合中添加一个元素?
ICollection
是一个接口,你不能直接实例化它。你需要实例化实现了 ICollection
接口的类,例如 List<T>
。另外,ICollection
接口 没有 Add
方法 -- 你需要使用实现了 IList
或 IList<T>
接口的类。
示例:
List<object> icollection = new List<object>();
icollection.Add("your item here");
List<Object> list = new List<Object>();
list.Add(object1);
list.Add(object2);
// etc...
ICollection collection = list;
// further processing of collection here.
IList<T>
实现了 ICollection
接口,至少我是这么看的。假设你有一组字符串,那么代码将会是:
ICollection<string> test = new Collection<string>();
test.Add("New Value");
List<T> list = new List<T>();
list.Add(item_from_your_list_box);
list.Add(item2_from_your_list_box);
你需要对这个集合做更具体的操作吗?
List<object>
实现了IList
接口,而IList
是ICollection
的子接口。因此,List<object>
也是一个ICollection
。 - DonutICollection<T>
接口,它与ICollection
接口不同。您是正确的,ICollection<T>
包含一个Add()
方法;然而,ICollection
没有:http://msdn.microsoft.com/en-us/library/system.collections.icollection.aspx - Donut