【问题标题】:How to get TypeName of underlying type in in C++/WinRT?如何在 C++/WinRT 中获取底层类型的 TypeName?
【发布时间】:2018-07-25 09:00:23
【问题描述】:

我正在尝试实现 ICustomPropertyProvider::Type() 方法,但是我找不到获取 C++/WinRT 类型的 TypeName 的方法。显然您在 C++/CX 中有 Object::GetTypeT::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;

【问题讨论】:

  • typeid() 保证是唯一的;它返回的字符串(通过name())可以是任何东西。不要依赖它做任何事情。

标签: c++ c++-winrt


【解决方案1】:

winrt::xaml_typename<Type>() 函数模板就是您所追求的。

【讨论】:

  • 我在之前的SDK上,所以我想一定有办法不用xaml_typename。但正如瑞安指出的那样,有一些奇怪的警告。我将获得新的 SDK 并完成它。
  • 只是确认一下,这是添加的哪个SDK?我现在在 17095,但我似乎找不到 winrt::xaml_typename。
  • 您需要包含 winrt/Windows.UI.Xaml.Interop.h 标头。
猜你喜欢
  • 1970-01-01
  • 2013-03-25
  • 2011-03-03
  • 1970-01-01
  • 1970-01-01
  • 2018-04-08
  • 1970-01-01
  • 2010-11-27
  • 1970-01-01
相关资源
最近更新 更多