Учитывая pack: // URI, как лучше всего определить, существует ли на этом URI скомпилированный ресурс (например, изображение PNG, скомпилированное с помощью действия «Resource»)?
После некоторого спотыкания я придумал этот код, который работает, но неуклюже:
private static bool CanLoadResource(Uri uri)
{
try
{
Application.GetResourceStream(uri);
return true;
}
catch (IOException)
{
return false;
}
}
(Обратите внимание, что документация Application.GetResources неверна - выдает исключение, если ресурс не найден, вместо того, чтобы возвращать ноль, как документы неправильно состояние.) (Документы были исправлены, см. комментарии ниже)
Мне не нравится отлавливать исключения, чтобы обнаружить ожидаемый (не исключительный) результат. И кроме того, я на самом деле не хочу загружать поток, я просто хочу знать, существует ли он.
Есть ли лучший способ сделать это, возможно, с помощью API ресурсов нижнего уровня - в идеале, без фактической загрузки потока и без перехвата исключения?