C # .NET - ItemCollection не компилируется, когда передается как IList <type> - PullRequest
1 голос
/ 19 декабря 2010

Я не смог заставить работать фрагмент кода № 2, поэтому мне пришлось изменить свою логику на фрагмент кода № 1.Может кто-нибудь объяснить, почему фрагмент кода № 2 не будет работать?Я думал, что так и будет, поскольку ItemCollection реализует интерфейс IList ... Я знаю типы, которые хранятся в каждом списке (список1 является строкой, а список2 является типом PictureInfo).

(Примечание. PictureInfo - это мое определениетип)

1:

    private void MoveImagesFromHCollectionToCollection(ItemCollection collectionMoveFrom, ItemCollection collectionMoveTo)
            {
                //Loop through All strings in the lstAll list box.  Then use each picture path to convert 
                //each picture into their own class
                foreach (string file in collectionMoveFrom)
                {
                    PictureInfo mp = ReturnPictureInfoTypeBasedOffFileExtension(img, file);
                    collectionMoveTo.Add(mp);
                    collectionMoveFrom.Remove(file);                         
                    //...
                }
            }

//Method call...
MoveImagesFromHCollectionToCollection(listbox1.Items, listbox2.Items);

2:

private void MoveImagesFromHCollectionToCollection(IList<string> collectionMoveFrom, IList<PictureInfo> collectionMoveTo)
        {
            //Loop through All strings in the lstAll list box.  Then use each picture path to convert 
            //each picture into their own class
            foreach (string file in collectionMoveFrom)
            {

                 PictureInfo mp = ReturnPictureInfoTypeBasedOffFileExtension(img, file);

                 collectionMoveTo.Add(mp);
                 collectionMoveFrom.Remove(file);
                 //...
            }
        }

//Method call...parameter 1 Listbox contains strings, parameter 2 Listbox contains objects of type PictureInfo
MoveImagesFromHCollectionToCollection(listbox1.Items, listbox2.Items);

Ответы [ 2 ]

3 голосов
/ 19 декабря 2010

ItemCollection не реализует IList<string>.

IList (не универсальный) - это другой интерфейс.

2 голосов
/ 19 декабря 2010

Он наследуется от интерфейса IList, но не от интерфейса IList<T>. Они отличаются, потому что последний принимает определенный тип объекта.

Документация IList

IList Документация

...