pack:// URIが与えられた場合、コンパイルされたリソース(たとえば、「Resource」のビルドアクションでコンパイルされたPNGイメージ)が実際にそのURIに存在するかどうかを判断する最良の方法は何ですか?
いくつかつまずいた後、私はこのコードを思いつきました。これは機能しますが、不器用です。
private static bool CanLoadResource(Uri uri)
{
try
{
Application.GetResourceStream(uri);
return true;
}
catch (IOException)
{
return false;
}
}
( Application.GetResourcesのドキュメントが間違っていることに注意してください。リソースが見つからない場合は、ドキュメントの状態が正しくないようにnullを返すのではなく、例外がスローされます。) (ドキュメントは修正されています。以下のコメントを参照してください)
期待される(例外ではない)結果を検出するために例外をキャッチするのは好きではありません。また、実際にストリームをロードするのではなく、ストリームが存在するかどうかを知りたいだけです。
おそらく低レベルのリソースAPIを使用して、これを行うためのより良い方法はありますか?理想的には、実際にストリームをロードせず、例外をキャッチしませんか?