无法将类型 Windows.Devices.Enumeration.DeviceWatcher 隐式转换为 DeviceWatcher

Cannot implicitly convert type Windows.Devices.Enumeration.DeviceWatcher to DeviceWatcher

我正在构建一个 IoT 应用程序,它需要检测何时插入和移除可移动设备。尝试创建 DeviceWatcher 对象时出现以下错误。

DeviceWatcher.CreateWatcher() 方法的类型为 DeviceWatcher。为什么我会收到此错误?

我不确定问题出在哪里,也不知道如何解决。任何人都可以在这里提供见解吗?

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

错误:

无法将类型 'Windows.Devices.Enumeration.DeviceWatcher' 隐式转换为 'NamespaceName.DeviceWatcher'

申请类型:

Windows 10 后台应用程序。周年纪念版。

能力清单:

可移动存储

尝试隐式变量声明:

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);