2017-12-08 10 views
0

UWP 앱에서 StorageFolder.GetFilesAsync() 메소드를 사용하여 app 저장소 폴더에서 이미지에 액세스하려고합니다.UWP StorageFolder.GetFilesAsync()가 시스템을 반환합니다 .__ ComObject

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(); 

    } 

'IReadOnlyList'대신 'System .__ ComObject'가 표시됩니다. 'IReadOnlyList'로 전송할 수 없으며 필요한 파일을 가져 오는 방법을 모르겠습니다.

Iv'e는 알려진 폴더를 사용해도 동일한 결과를 얻으려고했습니다. 앱에 파일이나 폴더에 대한 액세스 권한이 없다는 것을 나타내는 int 예외는 없습니다. Iv'e는 사진 라이브러리에 액세스 할 수있는 앱 매니페스트도 확인했습니다.

어떻게 해결할 수 있습니까?

답변

0

이것은 의도적으로 설계된 것입니다. 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(); 
}