给定一个 pack:// URI,判断一个已编译资源(例如,PNG 图像,使用“资源”的构建操作编译)是否确实存在于该 URI 中的最佳方法是什么?
经过一番磕磕绊绊,我想出了这段代码,它有效但很笨拙:
private static bool CanLoadResource(Uri uri)
{
try
{
Application.GetResourceStream(uri);
return true;
}
catch (IOException)
{
return false;
}
}
(请注意,Application.GetResources文档是错误的——如果找不到资源,它会抛出异常,而不是像文档错误状态那样返回 null。) (文档已更正,请参阅下面的评论)
我不喜欢捕获异常来检测预期的(非异常)结果。此外,我实际上并不想加载流,我只想知道它是否存在。
有没有更好的方法来做到这一点,也许使用较低级别的资源 API - 理想情况下不实际加载流并且不捕获异常?