将IBuffer转换为IRandomAccessStream

isp*_*iro 1 .net c# windows-store-apps win-universal-app uwp

我知道我可以将IBuffera 转换为a Stream然后从那里转换为a IRandomAccessStream.但必须有一个直接的方式.

Ray*_*hen 5

IBuffer不是一个流,所以你需要有一些东西来适应彼此.在.NET中,您可以使用Stream.

IBuffer buffer = ...;
IRandomAccessStream randomAccessStream = buffer.AsStream().AsRandomAccessStream();
Run Code Online (Sandbox Code Playgroud)

如果您编写两个函数调用很痛苦,可以编写辅助函数.

static IRandomAccessStream AsRandomAccessStream(this IBuffer buffer)
{
    return buffer.AsStream().AsRandomAccessStream();
}
Run Code Online (Sandbox Code Playgroud)

那么你可以做到

IBuffer buffer = ...;
IRandomAccessStream randomAccessStream = buffer.AsRandomAccessStream();
Run Code Online (Sandbox Code Playgroud)