我正在为UWP应用程序编写一些库。我的图书馆设置了:
我在那里MediaPlayerElement
,想查看视频网址。在15063年引入了Uri财产。
获取与MediaSource关联的URI 设备系列:Windows 10 Creators更新(引入v10.0.15063.0) API合同:Windows.Foundation.UniversalApiContract(介绍v4)
我以为我可以使用这样的东西:
if (ApiInformation.IsPropertyPresent(typeof(MediaSource).FullName, "Uri"))
{
return (element.MediaPlayer.Source as MediaPlaybackItem)?.Source?.Uri.AbsoluteUri;
}
它确实有效但我发现当我将我的库包含到具有以下内容的应用程序时会出现问题:
在这种情况下,抛出异常:..............中的'System.MissingMethodException' 找不到方法:'System.Uri Windows.Media.Core.MediaSource.get_Uri()'。
try/catch
无效。
还有什么我可以做的吗?
答案 0 :(得分:1)
将访问URI属性的代码放入您在if语句中调用的单独方法中。这应该避免丢失方法异常。这是因为.NET以每个方法动态解析方法调用的方式。在14393,它永远不会得到那种新方法,所以你不会得到例外。
答案 1 :(得分:0)
你无能为力。唯一的解决方案是将您应用的最低版本设置为15063,并要求目标设备将Windows 10版本更新为最低版本或更高版本。我自己在现有应用中使用CREATE TABLE SampleData (Grade INT, TimeInterval INT, SubjectName VARCHAR(100))
INSERT SampleData
(
Grade,
TimeInterval,
SubjectName
)
VALUES
(1, 0, 'History '),
(1, 1, 'Chemistry '),
(1, 3, 'Biology '),
(2, 0, 'Maths '),
(2, 2, 'Biology '),
(2, 3, 'History '),
(3, 0, 'Biology '),
(3, 1, 'History '),
(3, 2, 'Chemistry '),
(3, 3, 'Maths ');
DECLARE @cols nvarchar(max)
SELECT @cols = STUFF(
(SELECT DISTINCT CONCAT(',[', t.TimeInterval, ']') FROM SampleData t FOR XML PATH (''))
,1,1,'')
DECLARE @headers nvarchar(max)
SELECT @headers = STUFF(
(SELECT DISTINCT CONCAT(', [' , t.TimeInterval , '] AS [TimeInterval' , t.TimeInterval, ']') FROM SampleData t FOR XML PATH (''))
,1,1,'')
DECLARE @query nvarchar(max) = N'Select [Grade], ' + @headers +
' FROM
(
SELECT Grade, TimeInterval, SubjectName FROM SampleData
) src
PIVOT
(
MAX(SubjectName) FOR TimeInterval IN ('+ @cols+ ')
) pvt
'
PRINT @query
EXEC (@query)
DROP TABLE SampleData
,并被迫将最低版本设置为15063。
此外,您无法使用MediaPlayerElement
来捕获这些类型的错误。