2016年,我为什么还要使用P / Invoke?

时间:2016-03-15 12:42:50

标签: c# pinvoke

我已经离开编程游戏已有近20年了,但每隔一段时间我就会用Visual Studio编写应用程序。

我的问题是,鉴于.NET已经使用了大约13年,我为什么 永远 必须使用原生API又名P / Invoke?为什么还没有将所有内容都转换为官方.NET托管程序集?

就在最近,我遇到了一种情况,我只是想在不使用鼠标的情况下打开和关闭我的Wifi连接。键盘总是更快(对我而言),但它没有标准的Windows键盘快捷键。非常棒,一个非常简单的C#程序供我编写。想象一下,当我发现我必须深入了解原生API时,我会感到惊讶。我记得在.NET早期就必须这样做 - 当然,一项新技术需要几年才能赶上,对吗?那么现在是2016年。

我想我只是看不到大局。请有人照亮我。

1 个答案:

答案 0 :(得分:3)

因为这不是.NET为解决而创建的问题。事实上,人们可以轻易地争辩说,随着跨平台.NET Core的出现,我们甚至会远离这个愿景。

Windows API仍然存在且运行良好,并且 Windows的编程方式。通过此API管理有关Windows的所有特定于实现的内容。对于.NET库来复制每个API调用,该库集必须变得非常大,并且必须抽象出比现在更多的低级概念。

您使用的每个程序(包括.NET CLR)都使用Windows API在Windows上运行。