我正在编写一个应该能够显示任何数据列表的控件。我想要做的是模仿 for-in 构造,因为我检查包含 Current 属性和 MoveNext 方法的公共 GetEnumerator 函数。
我已确定以下内容:
- 我可以通过简单地在我的对象上调用 MethodAddress 来检查方法的存在。如果我得到地址,则该方法存在。
- 我可以使用 RTTI 来检查方法的返回类型。
- 我可以使用 RTTI 来检查属性并读取它。
不过,在这两者之间,我缺少一些信息:
- 给定地址,我如何调用该方法?我只是写一个定义(就像我会为导入一样),转换地址并调用它吗?
- 检查方法的返回类型需要使用其 PTypeInfo 调用 GetTypeData。我通过在类型上调用 TypeInfo 来获取 PTypeInfo。那么我如何获得给定方法的 PTypeInfo,只给定它的地址呢?