C# UWP中处理MediaSource URI属性的自适应代码

C# UWP中处理MediaSource URI属性的自适应代码,c#,xaml,uwp,C#,Xaml,Uwp,我正在为UWP应用程序编写一些库。我的图书馆已设置: 目标版本:16299 最低版本:14393 我有MediaPlayerElement,想查看视频URL。15063年引进了该地产 获取与媒体源关联的URI。 设备系列:Windows 10 Creators更新(推出v10.0.15063.0) API合同:Windows .Pusitual.UnvialPalopiSoupe(引入V4) 我想我可以用这样的东西: if (ApiInformation.IsPropertyPresent(

我正在为UWP应用程序编写一些库。我的图书馆已设置:

  • 目标版本:16299
  • 最低版本:14393
我有
MediaPlayerElement
,想查看视频URL。15063年引进了该地产

获取与媒体源关联的URI。
设备系列:Windows 10 Creators更新(推出v10.0.15063.0) API合同:Windows .Pusitual.UnvialPalopiSoupe(引入V4)

我想我可以用这样的东西:

if (ApiInformation.IsPropertyPresent(typeof(MediaSource).FullName, "Uri"))
{
    return (element.MediaPlayer.Source as MediaPlaybackItem)?.Source?.Uri.AbsoluteUri;
}
它实际上是有效的,但我发现在将我的库包含到具有以下功能的应用程序中时存在问题:

  • 目标和最小版本14393
引发异常:…..中的“System.MissingMethodException” 找不到方法:“System.Uri Windows.Media.Core.MediaSource.get_Uri()”

try/catch
在这种情况下没有帮助


还有什么我能做的吗?

你对此无能为力。唯一的解决方案是将应用程序的最低版本设置为15063,并要求目标设备将Windows 10版本更新为最低版本或更高版本。我自己在现有的应用程序中使用了
MediaPlayerElement
,并被迫将最低版本设置为15063


此外,您无法使用try catch捕获此类错误,请将访问URI属性的代码放入单独的方法中,然后从if语句中调用该方法。这应该可以避免缺少方法异常。这是因为.NET在每个方法的基础上动态解析方法调用的方式。在14393上,它永远不会使用新方法,因此不会出现异常。

看起来唯一“安全”的方法是使用反射来获取
Uri
属性。太棒了!非常感谢。我实际上得到了一个异常,但在这种情况下,try/catch捕捉到了异常。