Учитывая, что URI пакета: // URI, лучший способ определить, действительно ли скомпилированный ресурс (например, изображение PNG, скомпилированное с помощью действия сборки «Ресурс») существует URI?Определить, существует ли ресурс WPF на основе URI
После некоторого спотыкаясь, я придумал этот код, который работает, но неуклюж:
private static bool CanLoadResource(Uri uri)
{
try
{
Application.GetResourceStream(uri);
return true;
}
catch (IOException)
{
return false;
}
}
(Обратите внимание, что Application.GetResources документация is wrong - он бросает исключение, если ресурс не найден , а не возвращать нуль как документы неправильно утверждать.)(Документы были исправлены, см комментариев ниже)
Я не люблю ловить исключения для выявления ожидаемого (неисключительный) результата. И кроме того, я действительно не хочу загружать поток, я просто хочу знать, существует ли он.
Есть ли лучший способ сделать это, возможно, с API-интерфейсами более низкого уровня - в идеале, без фактической загрузки потока и не вылавливания исключения?
Они обновили документ, там говорится, что он выдает исключение, если ресурс не найден. – Shimmy
@Shimmy, спасибо за обновление - я отредактировал эту информацию. –
@John White: Кстати, я думаю, вы должны отметить [jpierson's post] (http://stackoverflow.com/questions/2013481/detect-whether-wpf-resource-exists-based-on-uri/2549641#2549641) как ответ. – Shimmy