【发布时间】:2018-11-17 18:44:18
【问题描述】:
给定 Object1 和 Object2,是否有任何技术可以确定它们是否都实现了一个公共接口?如果接口在编译时已知(使用 typeof ... 是 [已知接口]),则没有问题,但是如果在编译时未指定接口呢?
具体用例是实现一个强类型的集合对象。如果它与 Object1 共享一个公共接口,我只想添加 Object2。 Typename 不起作用,因为它返回基础对象类型,并且我可能有两个不同的对象,每个对象都实现 ISomeInterface 但在不同的基础类上。
可以找到一个不太有效的示例here(因为它依赖于 typename 但不允许进行接口比较)
具体来说,扩展 IsTypeSafe 函数找到了 here on CodeReview,但经过调整后,如果对象支持所有先前添加的项目共有的接口,则可以将其添加到列表中。
具体问题:有没有办法确定两个对象是否都实现了一个在编译时未指定的通用接口?
【问题讨论】:
-
FWIW 如果我今天要编写该代码,我可能会更好地将
VarType枚举用于非对象类型。
标签: vba collections interface strong-typing implements