J C*_*ins 8 .net windows constants
每当我看到代码调用说kernel32.dll或User32.dll时,即使在MSDN上,代码片段也要求开发人员将任何所需的常量(例如WM_SETREDRAW = 11)硬编码到例程中.由于这些常量永远不会按定义更改并始终具有一个标准定义,为什么.net不能在某处提供它们?我觉得我们最终都会根据需要创建自己的常量库和标准的Windows dll调用.看起来这种重复工作是浪费的,容易出错.
也许我看起来不够努力而且他们都在某处,如果有的话,有人可以提供他们的位置吗?
我认为只有.Net团队才能提供实际答案,我们只能做出假设。
原因可能有很多。以下是一些猜测:
IntPtr
对象),这不是 .Net 的处理方式(例如,您应该使用 FileStream 而不是CreateFile
// ReadFile
/ )WriteFile
CloseHandle
Environment.NewLine
例如 ( A string containing "\r\n" for non-Unix platforms, or a string containing "\n" for Unix platforms.
)。因此添加整个 Win32 API 是没有意义的。微软在命名空间中添加了一些Windows特定的类Microsoft.Win32
,但它非常有限,而且这些功能是必不可少的(注册表操作、文件对话框...)。
关于pinvoke.net,我不会太依赖它。我经常看到写得不好的方法声明会在 x64 系统上崩溃(int
而不是IntPtr
结构布局问题......)。又如:WriteFile
方法声明不一致。SafeHandle
与IntPtr
...等
归档时间: |
|
查看次数: |
200 次 |
最近记录: |