web-dev-qa-db-fra.com

Ajouter à une ICollection

J'écris actuellement un projet C # et j'ai besoin de faire des tests unitaires pour le projet. Pour l'une des méthodes dont j'ai besoin pour effectuer des tests unitaires, j'utilise une ICollection qui est normalement remplie à partir des éléments sélectionnés d'une zone de liste.

Lorsque je crée un test unitaire pour la méthode, il crée la ligne

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

Comment puis-je créer une instance de cette ICollection et un élément de la collection?

16
Boardy

ICollection est une interface, vous ne pouvez pas l'instancier directement. Vous devrez instancier une classe qui implémente ICollection; par exemple, List<T>. De plus, l'interface ICollection n'a pas de méthode Add - vous aurez besoin de quelque chose qui implémente IList ou IList<T> pour ça.

Exemple:

List<object> icollection = new List<object>();
icollection.Add("your item here");
30
Donut
List<Object> list = new List<Object>();
list.Add(object1);
list.Add(object2);
// etc...

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

Contrairement à certains commentaires, IList<T> met en œuvre ICollection, du moins pour autant que je sache.

4
Altair

Disons que vous aurez une collection de chaînes, alors le code sera:

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

Je crois que vous devez hériter de l'interface ICollection dans une nouvelle classe avant de pouvoir l'utiliser.

Comment implémenter ICollection

0
Neil Knight

Ce que vous pouvez faire est de créer un type qui implémente ICollection et de l'utiliser à partir de là dans vos tests. Une liste ou une collection fonctionnerait pour créer une instance de l'objet. Je suppose qu'une autre question serait de savoir quel type sont les éléments de la zone de liste. L'ajout d'éléments à la liste ou à la collection est assez simple en utilisant simplement la méthode .Add (...).

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

Y a-t-il quelque chose de plus spécifique que vous devez faire avec cette collection?

0
ShelbyZ