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

时间:2017-09-01 16:11:31

标签: c# uwp windows-10-iot-core removable-storage

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

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

我不确定问题是什么,我不知道如何解决这个问题。谁能在这里提供见解?

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

错误:

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

申请类型:

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

清单功能:

可移动存储

2 个答案:

答案 0 :(得分:1)

尝试隐式变量声明:

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

进一步解释

通过隐式声明,您实际上是让编译器执行其魔法(智能猜测)并派生变量的类型,根据右侧返回的数据类型进行声明。基本上你的错误是假设watcher变量应该是DeviceWatcher类型,但它不是。至少不是你输入的那个。在您的using语句中可能存在冲突,DeviceWatcher默认为Windows.Devices.Enumeration.DeviceWatcher以外的DeviceInformation.CreateWatcher() <{1}}

返回的正确类型

答案 1 :(得分:1)

使用var是一种选择。您还可以明确指定命名空间:

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