Tôi đang cố gắng tạo phương thức trả về danh sách bất kỳ loại người dùng nào muốn. Để làm điều này tôi đang sử dụng Generics, mà tôi không quá quen thuộc với vì vậy câu hỏi này có thể được rõ ràng. Vấn đề là mã này không hoạt động và ném các thông báo lỗi Cannot convert type Systems.Collections.Generic.List<CatalogueLibrary.Categories.Brand> to Systems.Collection.Generic.List<T>
Có thể sử dụng IList nhưng không Danh sách theo phương pháp chung
private List<T> ConvertToList<T>(Category cat)
{
switch (cat)
{
case Category.Brands:
return (List<T>)collection.Brands.ToList<Brand>();
}
...
}
Nhưng nếu tôi sử dụng IList
thay vào đó, không có lỗi.
private IList<T> ConvertToList<T>(Category cat)
{
switch (cat)
{
case Category.Brands:
return (IList<T>)collection.Brands.ToList<Brand>();
}
...
}
Tại sao tôi có thể sử dụng IList nhưng không liệt kê trong trường hợp này? collection.Brands trả về loại BrandCollection
từ thư viện của bên thứ ba vì vậy tôi không biết cách tạo. Nó có thể được rằng BrandCollection
có thể xuất phát từ IList (chỉ đoán rằng nó không) và do đó, nó có thể được chuyển đổi sang nó, nhưng không đến một danh sách bình thường?
Bạn nên đặt các ràng buộc loại trên đó! Bạn không thể chỉ đi xung quanh việc đúc những thứ vớ vẩn. – antonijn
Bạn có chắc chắn ví dụ thứ hai của bạn không phải là bộ sưu tập 'return (IList).Brands.ToList ();'? –
Matthew
Tôi sẽ xem xét sau khi làm việc này. Tôi là một chút mới để generics vì vậy figured tôi muốn để lại cho đến khi sau này trong trường hợp nó đã phá vỡ một cái gì đó khác: D Liệu ràng buộc là 'nơi T: Brand' (và các loại khác)? – XSL