ApiInformation检查StoreRequestHelper.SendRequestAsync()

时间:2018-07-04 17:10:33

标签: c# uwp windows-10-universal

我正在使用Lucene OR search using Boolean Query记录的SendRequestAsync(),更具体地说是here记录的请求代码16,来在我的应用程序中显示评论对话框。 我的代码本质上就是示例之一,并且可以在我的系统上正常工作。

从文档中说

  

SendRequestAsync方法仅适用于以Windows 10 1607版或更高版本为目标的应用程序。 Windows 10版本1607之后的发行版仅支持此方法支持的某些请求。

并且没有关于请求代码16的信息似乎表明它需要晚于1607的构建。

我现在的目标是通过ApiInformation添加支票,以仅从受支持的Windows 10版本中使用此方法,否则使用here来启动Store应用。

我尝试了以下方法

if(ApiInformation.IsMethodPresent(nameof(StoreRequestHelper), nameof(StoreRequestHelper.SendRequestAsync)))
{
     //use StoreRequestHelper.SendRequestAsync()
}
else
{
     //Launcher.LaunchUriAsync()
}

但是,即使在我的系统上(即使是最新版本的系统),该支票也返回false。如果取消了支票,则可以打开对话框。

检查此API的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

问题产生的原因与我获取类名称的方式有关,该类需要具有完整的名称空间路径。实际上nameof仅返回类的名称: nameof(StoreRequestHelper) -> "StoreRequestHelper"。为了获得正确的名称,我使用了typeof(StoreRequestHelper).FullName

工作代码如下:

if(ApiInformation.IsMethodPresent(typeof(StoreRequestHelper).FullName, nameof(StoreRequestHelper.SendRequestAsync), 3))
{
     //use StoreRequestHelper.SendRequestAsync()
}
else
{
     //Launcher.LaunchUriAsync()
}