问题标签 [rtti]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
json - Delphi Superobject,json的通用列表
我有一个带有一些 TObjectList<>-fields 的对象,我尝试在SuperObject的帮助下将其编码为 JSON 。
在 SuperObjects 代码的深处,有一个 ToClass 过程,迭代字段并将它们添加到 json 结果中。
在此循环中,检查 TRttiFields FieldType。如果为 nil,则跳过该对象。
我的通用列表字段的 FieldType 为 nil。为什么?
如何让 SuperObject 序列化我的对象列表?
delphi - 我可以从字符串中获取 PTypeInfo 吗?
这可能是“否”,但是有什么方法可以使用 Delphi 的 RTTI,无论是老式的还是 2010 年扩展的 RTTI,来传递一个包含类型名称的字符串,特别是枚举的名称类型,并让它给我该类型的 PTypeInfo 吗?我查看了 RTTI.pas 和 TypInfo.pas,但没有看到任何可以做到这一点的函数,但我可能错过了一些东西。
我在找什么:
或类似的东西。事情是,枚举类型的名称将被传入;在编译时不会知道。
c++ - 需要了解好的 C++ 反射 API(用于 RuntimeType Identification -RTTI 和运行时调用)
我需要一个好的 C++ 反射 API(如 Microsoft API),它使我能够确定在运行时识别的类型(类、结构、枚举、int、float、double 等),声明它们,并在运行时调用这些类型的方法.
问候,
乌斯曼
c++ - 通过检测当前的“this”对象类型在 C++ 中进行类型转换
我的问题与 C++ 中的 RTTI 有关,我试图检查一个对象是否属于另一个对象的类型层次结构。BelongsTo() 方法检查这一点。我尝试使用 typeid,但它会引发错误,我不确定如何找到在运行时转换为的目标类型。
使方法虚拟并让派生类这样做似乎是个坏主意,因为我在同一类型层次结构中有很多类。或者有人知道做同样事情的任何其他/更好的方法吗?请建议。
更新:b.BelongsTo(a) 应该检测输入对象类型 (a) 是否是类型层次结构中当前对象 (b) 的祖先。
c++ - 在 Mac OS X 上将带有和不带 RTTI 的库与 GCC 混合?
我一直在思考一个问题,在我继续伤害自己之前,我想确认一下:
是否有可能有一个 GCC 项目使用使用和不使用 RTTI 编译的库?
因此,例如,我有使用库 B(使用 RTTI 编译)和库 C(未使用 RTTI 编译)的项目 A(不使用 RTTI 编译)。从理论上讲,所有这些都应该编译和链接没有问题吗?
delphi - Delphi RTTI 找不到接口
我正在尝试使用 D2010 RTTI 获取接口。
IMyPrettyLittleInterface
和都TMyIntfClass = class(TInterfacedObject, IMyPrettyLittleInterface)
在 中声明mynamespace.pas
,特别是
有谁知道为什么这不起作用?有没有办法解决我的问题?提前致谢!
delphi - Delphi TRttiType.GetMethods 返回零个 TRttiMethod 实例
我最近能够使用 Robert Loves “GetType”-workaround(通过显式调用 ctx.GetType,例如 RType := ctx.GetType(TypeInfo( IMyPrettyLittleInterface));)。
一个合乎逻辑的下一步是迭代所述接口的方法。考虑
这一次,我的mynamespace.pas
样子是这样的:
不幸的是,RType.GetMethods
返回一个长度为零的 TArray 实例。有没有人能重现我的烦恼?(请注意,在我的示例中,我已使用 TRttiContext.GetType 显式获取 TRttiType,而不是解决方法;包含介绍是为了警告读者可能存在一些关于 rtti 和接口的未解决问题。)谢谢!
delphi - 使用 TValue 进行 Delphi 接口转换
我最近对接口和 D2010 RTTI 进行了广泛的试验。我在运行时不知道接口的实际类型;虽然我可以使用字符串访问它的限定名称。
考虑以下:
内容mynamespace.pas
如下:
为了完整起见,实现如下
原因{$define WORKAROUND}
可以在这篇文章中找到。
问题:有什么方法可以让我使用 RTTI 进行所需的类型转换?换句话说:有没有办法让我调用 IChild.ChildMethod,因为我知道 1)作为字符串的 IChild 的限定名称,以及 2)作为 IParent 接口对 TChild 实例的引用?(毕竟,硬编码演员工作正常。这甚至可能吗?)谢谢!
c++ - 可以比较 RUNTIME_CLASS() 宏返回的指针吗?
我有一个函数,它需要一个CRuntimeClass
指针列表来设置一个视图。如果使用已设置的相同类的列表调用该函数,我想不做任何事情就返回。保存指针值并在下次调用时比较它们目前正在工作,但我想验证这是合法的事情,而不是碰巧起作用的事情。也许我的 doc-search-fu 缺少,但我找不到任何地方可以保证从给定类的 RUNTIME_CLASS() 宏返回的指针值在程序的生命周期中是相同的。我能找到的最接近的是在文档中CObject::GetRuntimeClass()
:
每个 CObject 派生类都有一个 CRuntimeClass 结构。
这意味着指针值不应该改变,但并不完全说明它。有没有人对此有更具体的看法?还是有更好的方法来比较 CRuntimeClasses?
c++ - 为什么 C++ 不允许您请求指向最派生类的指针?
(这个问题可能应该参考 Stroustrup 来回答。)
能够请求指向最派生类的指针似乎非常有用,如下所示:
但是这种机制在 c++ 中没有提供。为什么?
更新,激励示例:
假设您没有 Base 和 Derived 以及 Processor,而是:
但这在 C++ 中很难做到,需要像访问者模式这样的创造性解决方案。那么,问题是:为什么在 C++ 中这样做很棘手,而像“CAST_TO_MOST_DERIVED”这样的东西会让它变得更简单?
更新:维基百科无所不知
我认为 Pontus Gagge 有一个很好的答案。从关于Multiple Dispatch的 Wikipedia 条目中添加这一点:
“Stroustrup 提到他喜欢The Design and Evolution of C++中的 Multi-methods 概念,并考虑在 C++ 中实现它,但声称无法找到有效的示例实现(类似于虚函数)并解决一些可能的类型歧义问题. 他接着说,虽然这个特性仍然很好,但它可以使用双重调度或基于类型的查找表来近似实现,如上面的 C/C++ 示例中所述,因此对于未来的语言来说是一个低优先级特性修订。”
作为背景,您可以阅读有关Multi-Methods的一些摘要,这比我提到的那种调用要好,因为它们可以正常工作。