Как инициализировать или получить коллекцию объектов класса в C # - PullRequest
0 голосов
/ 03 марта 2019

Я пытаюсь получить список установленных приложений из диспетчера пакетов.Я не знаю, как инициализировать или получить список.Это должно быть просто, но я просто пропускаю ссылку или шаг.

List<PackageInfo> packageInfo = PackageManager
                  .GetInstalledApplications(PackageInfoFlags.MetaData);

Ошибка CS0266 Невозможно неявно преобразовать тип 'System.Collections.Generic.IList' в 'System.Collections.Generic.List'.Существует явное преобразование (вам не хватает приведения?)

Ответы [ 4 ]

0 голосов
/ 03 марта 2019

Да.var работает.

На самом деле был неправильный класс.Это должен быть ApplicationInfo класс.

Так что это либо

IList<ApplicationInfo> packageInfo = PackageManager
    .GetInstalledApplications(PackageInfoFlags.MetaData);

, либо

var packageList = PackageManager 
    .GetInstalledApplications(PackageInfoFlags.MetaData);

Да, это должно быть IList.Спасибо.

0 голосов
/ 03 марта 2019

Подойдет ли var packageInfo вместо List<PackageInfo> для ваших нужд?Ответ @mtv также может сработать, но я думаю, что использование var лучше для производительности и читабельности

0 голосов
/ 03 марта 2019

В зависимости от ваших потребностей вы можете придерживаться IList

IList<PackageInfo> packageInfo = PackageManager
    .GetInstalledPackages(PackageInfoFlags.MetaData);

Если вам действительно нужен экземпляр List, позвоните ToList (требуется using System.Linq;)

List<PackageInfo> packageInfo = PackageManager
    .GetInstalledPackages(PackageInfoFlags.MetaData)
    .ToList();
0 голосов
/ 03 марта 2019

Вам нужен простой оператор преобразования в конце.

List<PackageInfo> packageInfo = PackageManager
                  .GetInstalledApplications(PackageInfoFlags.MetaData) as List<PackageInfo>;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...