2017-12-08 21 views
0

UWPアプリケーションで、StorageFolder.GetFilesAsync()メソッドを使用してappストレージフォルダから画像にアクセスしようとしています。UWP StorageFolder.GetFilesAsync()がSystem .__ ComObjectを返します。

public async void GetMediaFiles() 
    { 

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

    } 

Iv'eは同様の結果で既知のフォルダも使用しようとしました。

public async void GetMediaFiles() 
    { 

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

    } 

'IReadOnlyList'の代わりに 'System .__ ComObject'を取得しています。 私はそれを 'IReadOnlyList'にキャストできず、必要なファイルを取得するためにそれを使用する方法を知らない。

Iv'eは既知のフォルダも同じ結果で使用しようとしました。 アプリケーションにファイルまたはフォルダへのアクセス権がないことを示すint例外はありません。 Iv'eは、ピクチャライブラリへのアクセスのためのアプリケーションマニフェストもチェックしました。

どうすればこの問題を解決できますか?

答えて

0

これは仕様です。 IReadOnlyListはインターフェイスであるため、IReadOnlyListのインターフェイスを実装する任意のクラスのインスタンスを割り当てることができます。このタイプの変数を作成すると、そのクラスはSystem.__ComObjectとなります。System.__ComObjectIReadOnlyListにキャストする必要はありません。いつものように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(); 
} 
関連する問題