在运行时获取有关类的已实现接口的信息

时间:2017-11-22 09:57:36

标签: vba

对于任何两个给定的对象,我怎样才能在运行时确定这两个对象是否实现了相同的接口?

给定一个接口IStackExchange以及两个实现StackOverflow的{​​{1}}和CodeReviewSE类,我知道我可以这样做:

IStackExchange

因此,如果我知道将对象转换为什么接口,我可以验证它们是否实现了特定的接口。但是VBA不允许我做Dim SO As IStackExchange Dim CRSE As IStackExchange Set SO = New StackOverflow Set CRSE = New CodeReviewSE Debug.Print TypeName(SO) ' StackOverflow Debug.Print TypeOf SO Is IStackExchange ' True Debug.Print TypeOf SO Is StackOverflow ' True Debug.Print TypeOf SO Is CodeReviewSE ' False Debug.Print TypeName(CRSE) ' CodeReviewSE Debug.Print TypeOf CRSE Is IStackExchange ' True Debug.Print TypeOf CRSE Is StackOverflow ' False Debug.Print TypeOf CRSE Is CodeReviewSE ' True TypeOf SO Is TypeOf CRSE之类的事情。而Debug.Print TypeOf SO在接口方面没有帮助。

如何在不对接口进行硬编码的情况下获取有关对象实现的接口的更多信息。名字呢?涉及额外库的解决方案(只要Windows> = 7附带)非常受欢迎。

我已经看过someone mention casting the objects to an IUnknown type,但这只会有助于确定两个对象变量是否在内部引用同一个对象 - 它不会告诉任何有关已实现接口的内容。

0 个答案:

没有答案