2017-09-01 3 views
0

Je crée une application IoT qui doit détecter lorsqu'un périphérique amovible a été inséré et retiré. J'obtiens l'erreur suivante lors de la création d'un objet DeviceWatcher. La méthode DeviceWatcher.CreateWatcher() est de type DeviceWatcher. Pourquoi devrais-je recevoir cette erreur?Impossible de convertir implicitement le type Windows.Devices.Enumeration.DeviceWatcher en DeviceWatcher

Je ne sais pas quel est le problème et je ne sais pas comment résoudre ce problème. Quelqu'un peut-il donner un aperçu ici?

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

Erreur:

Impossible de convertir implicitement le type 'Windows.Devices.Enumeration.DeviceWatcher' à 'NamespaceName.DeviceWatcher'

Type d'application:

de Windows 10 Application de fond. Édition anniversaire.

Capacité Manifest:

Stockage amovible

Répondre

1

Essayez déclaration variable implicite:

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

Des explications plus détaillées

Par déclaration implicite vous laissez réellement le compilateur de faire sa magie (une supposition intelligente) et dériver le type de la variable, être ing déclaré en fonction du type de données renvoyé à droite. Fondamentalement votre erreur est l'hypothèse que la variable watcher devrait être de type DeviceWatcher mais ce n'est pas le cas. Du moins pas celui que tu as tapé. Ther est probablement un conflit au sein de vos using déclarations et les DeviceWatcher par défaut quelque chose de différent que Windows.Devices.Enumeration.DeviceWatcher qui est le bon type retourné par la DeviceInformation.CreateWatcher()

+0

Cela résout le problème, mais pourquoi dois-je déclarer implicitement? – Jnr

+0

@Jnr parce que vous avez deux classes nommées 'DeviceWatcher' une dans l'espace de noms' NamespaceName.DeviceWatcher' dans votre code et une dans 'Windows.Devices.Enumeration.DeviceWatcher' dans le cadre. Lorsque vous avez tapé 'DeviceWatcher', il a utilisé celui de votre code, mais la fonction retrace celle du framework. en utilisant 'var', il choisit automatiquement celui du framework. –

1

L'utilisation var est une option. Vous pouvez également spécifier l'espace de noms explicitement:

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