Tôi đang xử lý một sự kiện vượt qua sự kiện arg trỏ đến một danh sách và một newitem T, và công việc của tôi là thêm newitem vào Danh sách.Làm thế nào để thêm một mục loại T vào Danh sách <T> mà không biết T là gì?
Tôi làm cách nào để thực hiện điều này mà không kiểm tra tất cả các loại tôi biết T có thể là?
Mã hiện nay là một vài chục dòng này:
private void DataGridCollectionViewSource_CommittingNewItem(object sender, DataGridCommittingNewItemEventArgs e)
{
Type t = e.CollectionView.SourceCollection.GetType();
if (t == typeof(List<Person>))
{
List<Person> source = e.CollectionView.SourceCollection as List<Person>;
source.Add(e.Item as Person);
}
else if (t == typeof(List<Place>))
{
List<Place> source = e.CollectionView.SourceCollection as List<Place>;
source.Add(e.Item as Place);
}
...
Tôi muốn nếu có thể làm điều gì đó như thế này:
((List<T>) e.CollectionView.SourceCollection).Add((T)e.Item);
Bất kỳ ý tưởng?
'System.Collections.ICollection' không chứa một định nghĩa cho 'Thêm' - đó là lý do tại sao tôi đăng bài này ban đầu, nhưng tôi đã không cố gắng IList, mà một trong những công trình. Cảm ơn. – Alain
@Alain ah, đủ công bằng - Tôi đã mất dấu các phương thức nào trong đó giao diện (iirc nó hơi khác nhau giữa các phiên bản không chung và chung) –
Kiểm tra tính chính xác, có cách nào để xác minh rằng SourceCollection không có cùng loại với e.Item không? – Alain