Не удается неявно преобразовать тип Windows.Devices.Enumeration.DeviceWatcher в DeviceWatcher

Я создаю приложение IoT, которое должно определять, когда съемное устройство было вставлено и удалено. Я получаю следующую ошибку при попытке создать объект DeviceWatcher.

DeviceWatcher.CreateWatcher() метод имеет тип DeviceWatcher, Почему я получаю эту ошибку?

Я не уверен, в чем проблема, и я не знаю, как решить эту проблему. Кто-нибудь может дать понимание здесь?

DeviceWatcher watcher = DeviceInformation.CreateWatcher(DeviceClass.PortableStorageDevice);

Ошибка:

Не удается неявно преобразовать тип "Windows.Devices.Enumeration.DeviceWatcher" в "NamespaceName.DeviceWatcher"

Тип приложения:

Фоновое приложение Windows 10. Юбилейное издание.

Возможность манифеста:

Съемное хранилище

2 ответа

Решение

Попробуйте неявное объявление переменной:

var watcher = DeviceInformation.CreateWatcher(DeviceClass.PortableStorageDevice);

ДАЛЬНЕЙШЕЕ ОБЪЯСНЕНИЕ

Путем неявного объявления вы фактически позволяете компилятору сделать свое волшебство (разумное предположение) и получить тип переменной, будучи объявленным на основе типа данных, возвращаемых справа. В основном ваша ошибка заключается в предположении, что watcher переменная должна иметь тип DeviceWatcher но это не так. По крайней мере, не тот, который вы набрали. Это, вероятно, конфликт внутри вашего using заявления, а DeviceWatcher по умолчанию что-то другое, чем Windows.Devices.Enumeration.DeviceWatcher который является правильным типом, возвращаемым DeviceInformation.CreateWatcher()

С помощью var это один из вариантов. Вы также можете указать пространство имен явно:

Windows.Devices.Enumeration.DeviceWatcher watcher = DeviceInformation.CreateWatcher(DeviceClass.PortableStorageDevice);

Другие вопросы по тегам