无法将IStorageItem强制转换为StorageFile

时间:2016-05-25 00:02:09

标签: c# .net windows universal

以下代码无法编译,因为不接受IsOfType作为项目的方法。文档说明:

  

当此方法成功完成时,它将返回IStorageItem   表示指定的文件或文件夹。如果指定的文件或   找不到文件夹,此方法返回null而不是引发   异常。

     

要使用返回的项目,请调用该方法的IsOfType方法   IStorageItem接口,用于确定项目是文件还是文件   夹。然后将项目转换为StorageFolder或StorageFile。

private async void RestoreData(string fileName)
    {
        StorageFolder folder = ApplicationData.Current.LocalFolder;
        var item = folder.TryGetItemAsync(fileName);
        if (item == null)
        {
            existingData = false;
        }
        if (item.IsOfType(StorageItemTypes.File))
        {
            await ReadDataAsync(item as StorageFile);
            existingData = true;
        }
        existingData = false;
    }

1 个答案:

答案 0 :(得分:3)

您缺少await关键字以等待异步方法的结果 - 在这种情况下,您应该写下这样的内容:

var item = await folder.TryGetItemAsync(fileName);

由于item的类型为IStorageItem,而您的代码中的IAsyncOperation<IStorageItem>类型为Async

convention,所有异步方法都有var后缀,您需要等待结果检查它。

提示

在大多数IDE中,当您将鼠标悬停在if (fd = open(dir, O_RDONLY) == -1) 关键字上时,将显示一个变量类型 - 这样可以更容易地找到错误。