使用 EasClientDeviceInformation 获取 SystemFirmwareVersion 时收到 InvalidCastException
Receiving InvalidCastException when obtaining SystemFirmwareVersion using EasClientDeviceInformation
我正在使用 EasClientDeviceInformation class 获取有关用户设备的信息。
使用这两行
EasClientDeviceInformation deviceInfo = new EasClientDeviceInformation();
var version = deviceInfo.SystemFirmwareVersion;
在第二行生成一个 InvalidCastException
。完整的错误详细信息是:
Unable to cast object of type 'Windows.Security.ExchangeActiveSyncProvisioning.EasClientDeviceInformation'
to type
'Windows.Security.ExchangeActiveSyncProvisioning.IEasClientDeviceInformation2
此代码非常标准,只会让我相信对于我的系统来说 SystemFirmwareVersion
可能无法获得。但是,我不明白为什么这必然会引发强制转换异常。显然,从 EasClientDeviceInformation
到 IEasClientDeviceInformation2
的转换导致了这里的问题,但这是 EasClientDeviceInformation
class 的内部问题,而不是我自己的代码。为什么会这样?
您的 post 同时带有 windows-10
和 windows-8.1
标签,这令人困惑。
2
接口在 Windows 8.1 上根本不存在(它是在 Windows Phone 中引入的),所以这段代码永远不会在 Windows 8.1 台式机(你将无法使用默认项目模板编译代码)。
2
接口确实存在于 Windows 10 中,但您可能使用的是更早的 OS 版本,但(还)没有实现;建议您更新到最新版本('162 或更高版本)。也就是说,我 认为 这个 属性 在桌面上总是 returns 一个空字符串。
[2015 年 7 月 10 日新增]
另一件要记住的事情是,由于此 API 并非在所有设备系列(仅移动设备和桌面设备)中都存在,因此您应该使用 ApiInformation
class 检查是否存在API 在 Windows 上使用它之前 10. 这样,当 运行 在 Xbox 或其他一些设备上时,您的应用程序不会崩溃。
我正在使用 EasClientDeviceInformation class 获取有关用户设备的信息。
使用这两行
EasClientDeviceInformation deviceInfo = new EasClientDeviceInformation();
var version = deviceInfo.SystemFirmwareVersion;
在第二行生成一个 InvalidCastException
。完整的错误详细信息是:
Unable to cast object of type 'Windows.Security.ExchangeActiveSyncProvisioning.EasClientDeviceInformation' to type 'Windows.Security.ExchangeActiveSyncProvisioning.IEasClientDeviceInformation2
此代码非常标准,只会让我相信对于我的系统来说 SystemFirmwareVersion
可能无法获得。但是,我不明白为什么这必然会引发强制转换异常。显然,从 EasClientDeviceInformation
到 IEasClientDeviceInformation2
的转换导致了这里的问题,但这是 EasClientDeviceInformation
class 的内部问题,而不是我自己的代码。为什么会这样?
您的 post 同时带有 windows-10
和 windows-8.1
标签,这令人困惑。
2
接口在 Windows 8.1 上根本不存在(它是在 Windows Phone 中引入的),所以这段代码永远不会在 Windows 8.1 台式机(你将无法使用默认项目模板编译代码)。
2
接口确实存在于 Windows 10 中,但您可能使用的是更早的 OS 版本,但(还)没有实现;建议您更新到最新版本('162 或更高版本)。也就是说,我 认为 这个 属性 在桌面上总是 returns 一个空字符串。
[2015 年 7 月 10 日新增]
另一件要记住的事情是,由于此 API 并非在所有设备系列(仅移动设备和桌面设备)中都存在,因此您应该使用 ApiInformation
class 检查是否存在API 在 Windows 上使用它之前 10. 这样,当 运行 在 Xbox 或其他一些设备上时,您的应用程序不会崩溃。