Tôi đang cố gắng để thực hiện các diễn viên sauCast nhận đối tượng vào một danh sách <object> hay IEnumerable <object>
private void MyMethod(object myObject)
{
if(myObject is IEnumerable)
{
List<object> collection = (List<object>)myObject;
... do something
}
else
{
... do something
}
}
Nhưng tôi luôn luôn kết thúc với excepction sau:
Không thể cast đối tượng của loại ' System.Collections.Generic.List 1[MySpecificType]' to type 'System.Collections.Generic.List
1 [System.Object] '
Tôi thực sự cần điều này để làm việc vì phương pháp này cần phải rất chung chung để nhận các đối tượng đơn lẻ và bộ sưu tập cả hai loại không xác định.
Điều này có thể thực hiện được không, hoặc có cách nào khác để hoàn thành điều này không.
Cảm ơn bạn.
Cảm ơn bạn. Điều này đã làm nó. –
@Sergio, Bạn nên kiểm tra xem myObject có triển khai thực hiện IList thay vì IEnumerable trước khi truyền nếu bạn muốn tránh nguy cơ lỗi thời gian chạy. Nhiều bộ sưu tập dựng sẵn thực hiện IEnumerable nhưng không phải là IList (ví dụ, Dictionary <>, HashSet <>, Hashtable, Queue, Stack etc). – LukeH
@Luke: Nếu nó là một Danh sách (được ngụ ý bởi câu hỏi), nó sẽ thực hiện IList. –
erikkallen