2011-10-18 30 views
12

Tôi hiện đang viết một dự án C# và tôi cần làm thử nghiệm đơn vị cho dự án. Đối với một trong những phương pháp mà tôi cần để kiểm tra đơn vị, tôi sử dụng một ICollection thường được phổ biến từ các mục đã chọn của một hộp danh sách.Thêm vào một ICollection

Khi tôi tạo ra một đơn vị kiểm tra đối với phương pháp nó tạo ra dòng

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

Làm thế nào tôi có thể tạo ra một thể hiện của ICollection này và một mục vào bộ sưu tập?

Trả lời

25

ICollection là một giao diện, bạn không thể khởi tạo nó trực tiếp. Bạn sẽ cần phải khởi tạo một lớp thực hiện ICollection; ví dụ: List<T>. Ngoài ra, ICollection interface không có phương thức Add - bạn sẽ cần một cái gì đó triển khai IList hoặc IList<T> cho điều đó.

Ví dụ:

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

Nhưng Danh sách không thực hiện ICollection. Boardy yêu cầu một ICollection. –

+0

@ Hungary1234 'Danh sách ' triển khai 'IList', là hậu duệ của" ICollection'. Vì vậy, 'Danh sách ' cũng là một 'ICollection'. – Donut

+2

Cách @Donut viết nhận xét khiến tôi cảm thấy cần có QED ở cuối nó. – DFTR

0

Hãy nói rằng bạn sẽ có một bộ sưu tập các chuỗi, sau đó mã sẽ là:

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

Tôi tin rằng bạn cần phải kế thừa giao diện ICollection vào một lớp học mới trước khi bạn có thể sử dụng nó.

How to implement ICollection

0

Những gì bạn có thể làm là tạo ra một loại mà thực hiện ICollection và từ đó tận dụng nó trong thử nghiệm của bạn. Danh sách hoặc Bộ sưu tập sẽ hoạt động để tạo một thể hiện của đối tượng. Tôi đoán một câu hỏi khác sẽ là loại gì là các mục của hộp danh sách. Thêm các mục vào Danh sách hoặc Bộ sưu tập là khá tầm thường chỉ bằng cách sử dụng phương thức .Add (...).

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

Có điều gì cụ thể hơn bạn cần thực hiện với bộ sưu tập này không?

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

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

Trái với một số ý kiến, IList<T> không thực hiện ICollection, ít nhất là như xa như tôi có thể nói.

Các vấn đề liên quan