0

在 UWP 应用程序中,我尝试使用 StorageFolder.GetFilesAsync() 网络从应用程序存储文件夹访问图像。

    public async void GetMediaFiles()
    {

        _localMediaFolder = await GetOrCreateFolder(ApplicationData.Current.LocalFolder, "Media", ReservationId.ToString());
        IReadOnlyList<StorageFile> files = await _localMediaFolder.GetFilesAsync();

    }

我也尝试使用已知文件夹,结果相同。

    public async void GetMediaFiles()
    {

        StorageFolder picturesFolder = KnownFolders.PicturesLibrary;
        _tempMediaFolder = await picturesFolder.CreateFolderAsync("media", CreationCollisionOption.OpenIfExists);
        IReadOnlyList<StorageFile> storageFilesOperation = await _tempMediaFolder.GetFilesAsync();

    }

我得到的是“System.__ComObject”,而不是“IReadOnlyList”。我无法将其转换为“IReadOnlyList”,也不知道如何使用它来获取我需要的文件。

我也尝试使用已知文件夹,结果相同。输出中没有异常表明应用程序无权访问文件或文件夹。我还检查了应用程序清单以访问图片库。

我怎样才能解决这个问题?

4

1 回答 1

0

这是设计使然。不需要强制System.__ComObject转换,IReadOnlyList因为IReadOnlyList它是一个接口,这意味着当您创建这种类型的变量时,您可以为它分配一个实现该IReadOnlyList接口的任何类的实例,并且System.__ComObject是这样的类。您可以像往常一样继续工作storageFilesOperation,例如删除所有文件:

StorageFolder picturesFolder = KnownFolders.PicturesLibrary;
var _tempMediaFolder = await picturesFolder.CreateFolderAsync("media", CreationCollisionOption.OpenIfExists);
IReadOnlyList<StorageFile> storageFilesOperation = await _tempMediaFolder.GetFilesAsync();

foreach(StorageFile f in storageFilesOperation)
{
    await f.DeleteAsync();
}
于 2017-12-09T00:08:19.277 回答