2015-11-23 4 views
1

Я знаю, что могу преобразовать IBuffer в Stream, а затем оттуда до IRandomAccessStream. Но должен быть прямой путь.Конвертировать IBuffer в IRandomAccessStream

+1

И почему должен там быть прямой путь? –

+0

«должен быть прямой путь», не делайте ставку на него, этот материал COM действительно непрозрачен по дизайну. Если вы не можете просто «QueryInterface» последним напрямую, вы в значительной степени SOL. – Blindy

+0

@DStanley Поскольку UWP пытается искоренить .net и др. На каждом шагу, как показали разработки приложений UWP. – ispiro

ответ

4

IBuffer не является потоком, поэтому у вас должно быть что-то, чтобы адаптировать его к другому. В .NET вы можете использовать Stream.

IBuffer buffer = ...; 
IRandomAccessStream randomAccessStream = buffer.AsStream().AsRandomAccessStream(); 

Если вам нужно написать два вызова функций, вы можете написать вспомогательную функцию.

static IRandomAccessStream AsRandomAccessStream(this IBuffer buffer) 
{ 
    return buffer.AsStream().AsRandomAccessStream(); 
} 

, то вы можете сделать

IBuffer buffer = ...; 
IRandomAccessStream randomAccessStream = buffer.AsRandomAccessStream();