命名空间 Microsoft 与命名空间 Windows

namespace Microsoft vs namespace Windows

我正在尝试 C++/WinRT 和 VisualStudio 中可用的 WinUI 模板。我对命名空间 ::winrt::Microsoft::winrt::Windows 感到困惑。我只知道前一个,因为自动生成的回调函数使用了来自 ::winrt::Microsoft 的类型,并且不会编译,因为我错误地从 ::winrt::Windows 命名空间传递了相同名称的类型。我找不到有关 ::winrt::Microsoft 的更多信息,甚至找不到官方文档。

据我所知,::winrt::Microsoft::winrt::Windows 具有大部分名称相同的类型,但 ::winrt::Microsoft 中缺少某些类型。例如,::winrt::Windows::UI::Colors::winrt::Microsoft::UI::Colors都存在,但::winrt::Windows::UI::Color在Microsoft命名空间中没有“替代”。

问题:

Windows 是原始命名空间,所有 UI-related 类型都存在于其中。其中一些类型 'reinvented' 进入 Microsoft 命名空间,作为将 WinUI 摆脱其 UWP-only 痛苦的一部分。

如果(较新的)Microsoft 命名空间中有可用类型,则使用该类型。转换尚未完成,因此缺少某些类型。