2011-10-18 18 views
12

Actualmente estoy escribiendo un proyecto C# y necesito hacer pruebas unitarias para el proyecto. Para uno de los métodos que necesito para probar la unidad, uso una ICollection que normalmente se rellena desde los elementos seleccionados de un cuadro de lista.Agregar a una ICollection

Cuando creo una prueba unitaria para el método que crea la línea

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

¿Cómo puedo crear una instancia de esta ICollection y un elemento a la colección?

Respuesta

25

ICollection es una interfaz, no se puede crear una instancia directamente. Tendrá que instanciar una clase que implemente ICollection; por ejemplo, List<T>. Además, el ICollection interface no tiene un método Add; necesitará algo que implemente IList o IList<T> para eso.

Ejemplo:

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

Pero la lista no implementa ICollection. Boardy solicitó una Colecta. –

+0

@ Hungary1234 'List ' implementa 'IList', que es un descendiente de' ICollection'. Entonces 'List ' también es un 'ICollection'. – Donut

+2

La forma en que @Donut escribió el comentario me hace sentir que se requiere QED al final. – DFTR

0

Digamos que usted tendrá una colección de cadenas, a continuación, el código será:

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

Lo que puede hacer es crear un tipo que implementa ICollection y desde allí hacer uso de ella en su prueba. Una lista o colección funcionaría para crear una instancia del objeto. Supongo que otra pregunta sería qué tipo son los elementos del cuadro de lista. Agregar elementos a la Lista o Colección es bastante trivial simplemente usando el método .Add (...).

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

¿Hay algo más específico que deba hacer con esta colección?

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

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

Al contrario de algunos comentarios, IList<T> sí implementa ICollection, al menos en lo que puedo decir.

Cuestiones relacionadas