Получение байтового массива в UWP AppServiceConnection - PullRequest
0 голосов
/ 21 декабря 2018

Продолжая с другого вопроса , я пытаюсь передать данные между AppServiceConnection.Я заинтересован в отправке и получении массива байтов.Благодаря этому вопросу я знаю приемлемые типы.Но проблема в том, что я не знаю , как воспроизвести данные на принимающей стороне , и для этого нет документации.

В частности, у меня есть следующее:

Platform::Array<unsigned char>^ binaryData;
// ... Omitted code to construct the actual data ...
auto data = ref new ValueSet();
data->Insert("bin", binaryData);
if (_connection != nullptr)
    create_task(_connection->SendMessageAsync(data));

в моем сервисном коде и в коде моего получателя у меня есть

// Reproduce the data for processing
Platform::Array<unsigned char>^ binaryData = safe_cast<Platform::Array<unsigned char>^>(data->Lookup("bin"));

Но это приводит к поломке приемника.Я пытаюсь распечатать объект data->Lookup("bin") и вижу, что он имеет тип Windows.Foundation.IArrayReference.

РЕДАКТИРОВАТЬ : Глупый я, эта страница уже говорит мне, что мне нужносначала приведите его как IBoxArray и получите массив через свойство Value:

Platform::Array<unsigned char>^ binaryData = safe_cast<Platform::IBoxArray<unsigned char>^>(data->Lookup("bin"))->Value;

выполнит работу.

1 Ответ

0 голосов
/ 23 декабря 2018

В документации по IReferenceArray говорится, что сначала его преобразуют в IBoxArray и получают фактический массив через свойство Value: изменение на

Platform::Array<unsigned char>^ binaryData = safe_cast<Platform::IBoxArray<unsigned char>^>(data->Lookup("bin"))->Value;

выполнит эту работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...