我有以下代码:
var view = ApplicationView.GetForCurrentView();
var runtimeMethods = view.GetType().GetRuntimeMethods();
if (!view.IsFullScreen)
{
var tryEnterFullScreenMode = runtimeMethods.FirstOrDefault(
x => x.Name == "TryEnterFullScreenMode");
tryEnterFullScreenMode?.Invoke(view, null);
}
这样做会导致我的应用程序变为全屏,但是如果我在 Windows 8.1 电脑上,我将无法调用这些方法。在调用方法之前,我如何首先检查此功能是否可用。我会使用#if...#endif 吗? 基本上,我只想在应用程序在可以访问它的机器(Windows 10 操作系统)上运行时使用此代码。
最佳答案
桌面开发不会受到 Web 开发所经历的碎片化的影响,因此没有功能支持查询,而是库支持/操作系统版本。至少我不知道。
通常做的是
1) 动态加载程序集,基于您运行的操作系统系列版本。为此,您需要一些通用的接口(interface)包装器,它在内部、在引擎盖下包含所有“真实”的 API 调用。
2) 每个不同操作系统系列都有不同的版本。您需要支持 2 个代码库。不过,实际上不同的代码可能会移动到单独的程序集,因此您只有一小部分程序集,这些程序集在不同的操作系统系列之间是不同的。适合打补丁,因为只需将相对少量的数据移动到客户端。这里仍然需要通用接口(interface)。
所以你必须找到答案的基本问题是:不是如何处理多样性,而是当你发现你需要做一些与预期不同的事情时你应该做什么。从中你可以理解你将要处理它的最可靠的方式。
关于c# - 在调用它之前检查是否可以从 api 调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33175696/