如何内省 C++/CX 中的对象?我知道如何获取其类名(使用 IInspectable),但我无法弄清楚如何获取其属性列表,或者如果我只有方法名称(字符串),则如何调用方法。我在这里和 Google 中搜索了答案,但我发现与 WinRT 的 .NET 层相关(System.Reflection 命名空间似乎在 C++/CX 中不可用)。
正如 svick 所暗示的,您获取类名(从 IInspectable::GetRuntimeClassName 检索),将其交给 RoGetMetaDataFile。这会返回一个I元数据导入2 http://msdn.microsoft.com/en-us/library/ms232953.aspx。现在打电话IMetaDataImport2::FindTypeDefByName http://msdn.microsoft.com/en-us/library/ms233290.aspx。这将返回一个 typedef 标记。现在打电话IMetaDataImport2::GetTypeDefProps http://msdn.microsoft.com/en-us/library/ms230143.aspx这将为您提供有关该类型的属性。
从 typedef 属性中,您可以检索其他信息 - 如果是接口/结构(或枚举),则枚举方法/字段,查找运行时类的类型(如果是接口或类)等。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)