Проверка ApiInformation для StoreRequestHelper.SendRequestAsync () - PullRequest
0 голосов
/ 04 июля 2018

Я использую SendRequestAsync(), задокументировано здесь , точнее код запроса 16 задокументировано здесь , чтобы показать диалог просмотра в моем приложении. Мой код, по сути, один из примеров, и он отлично работает в моей системе.

Из документации написано, что

Метод SendRequestAsync доступен только для приложений, ориентированных на Windows 10 версии 1607 или более поздней. Некоторые запросы, поддерживаемые этим методом, поддерживаются только в выпусках после Windows 10 версии 1607.

И никакая информация о коде запроса 16 не указывает на то, что требуется сборка позже, чем 1607.

Теперь моя цель - добавить проверку через ApiInformation, чтобы использовать этот метод только из поддерживаемых сборок Windows 10, в противном случае используйте это уродливое решение , которое запускает приложение Store.

Я пробовал со следующим

if(ApiInformation.IsMethodPresent(nameof(StoreRequestHelper), nameof(StoreRequestHelper.SendRequestAsync)))
{
     //use StoreRequestHelper.SendRequestAsync()
}
else
{
     //Launcher.LaunchUriAsync()
}

Однако проверка возвращает false даже в моей системе, которая находится в последней сборке и может открыть диалоговое окно, если проверка снята.

Как правильно проверить этот API?

1 Ответ

0 голосов
/ 04 июля 2018

В результате возникла проблема, связанная с тем, как я получил имя класса, который должен иметь полный путь к пространству имен. На самом деле nameof возвращает только имя класса: nameof(StoreRequestHelper) -> "StoreRequestHelper". Чтобы получить правильное имя, я использовал typeof(StoreRequestHelper).FullName.

Рабочий код такой:

if(ApiInformation.IsMethodPresent(typeof(StoreRequestHelper).FullName, nameof(StoreRequestHelper.SendRequestAsync), 3))
{
     //use StoreRequestHelper.SendRequestAsync()
}
else
{
     //Launcher.LaunchUriAsync()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...