Add to an ICollection

a 夏天 提交于 2019-12-09 08:49:18

问题


I am currently writing a C# project and I need to do unit testing for the project. For one of the methods that I need to unit test I make use of an ICollection which is normally populated from the selected items of a list box.

When I create a unit test for the method it creates the line

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

How can I create an instance of this ICollection and an item to the collection?


回答1:


ICollection is an interface, you can't instantiate it directly. You'll need to instantiate a class that implements ICollection; for example, List<T>. Also, the ICollection interface doesn't have an Add method -- you'll need something that implements IList or IList<T> for that.

Example:

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



回答2:


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

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

Contrary to some comments, IList<T> does implement ICollection, at least as far as I can tell.




回答3:


Let's say you will have a collection of strings, then the code will be:

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



回答4:


I believe you need to inherit the ICollection interface into a new class before you can use it.

How to implement ICollection




回答5:


What you can do is create a type that implements ICollection and from there make use of it in your testing. A List or Collection would work for creating an instance of the object. I guess another question would be what type are the items of the list box. Adding items to the List or Collection is pretty trivial just using the .Add(...) method.

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

Is there something more specific you need to be doing with this collection?



来源:https://stackoverflow.com/questions/7808744/add-to-an-icollection

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!