C++ 如何在C++/温特?

C++ 如何在C++/温特?,c++,c++-winrt,C++,C++ Winrt,我正在尝试实现ICustomPropertyProvider::Type()方法,但是我找不到一种方法来获取C++/WinRT类型的TypeName。显然,在C++/CX中有Object::GetType和T::typeid,但在C++/WinRT中没有 我尝试了以下代码,但这只是一个猜测,因为这是我能找到的唯一与类型有关的远程操作。但是,我假定typeid()与XAML无关,因为它提供的唯一保证是它返回的字符串是唯一标识的 using namespace Windows::Devices::E

我正在尝试实现
ICustomPropertyProvider::Type()
方法,但是我找不到一种方法来获取C++/WinRT类型的
TypeName
。显然,在C++/CX中有
Object::GetType
T::typeid
,但在C++/WinRT中没有

我尝试了以下代码,但这只是一个猜测,因为这是我能找到的唯一与类型有关的远程操作。但是,我假定
typeid()
与XAML无关,因为它提供的唯一保证是它返回的字符串是唯一标识的

using namespace Windows::Devices::Enumeration;
using namespace Windows::UI::Xaml::Interop;

TypeName name;
name.Name = typeid(DeviceInformation).name();
name.Kind = TypeKind::Metadata;

winrt::xaml_typename()
函数模板就是您所要的模板。

typeid()
保证是唯一的;它返回的字符串(通过
name()。任何事情都不要依赖它。我使用的是以前的SDK,所以我想一定有一种方法可以不用
xaml\u typename
来实现它。但正如Ryan指出的,这里有一些奇怪的警告。我会得到新的SDK并完成它。只是确认一下,这是添加了哪个SDK?我现在在17095上,但似乎找不到winrt::xaml_typename。您需要包含winrt/Windows.UI.xaml.Interop.h头。