0

所以我在工作中一直在使用 Solidworks 的 API 来编写非常简单的 VBA 脚本来实现任务自动化。这真的很有帮助,但是说我不是程序员是轻描淡写的。我目前正在努力解决的问题是为什么 API 中的所有内容似乎都有一个 I 在其名称前面。

API 参考在这里,一切都以 I 开头。如果我只是将事物声明为 Sldworks.ModelDoc2 而不是 API 所说的 IModelDoc2,它似乎也能正常工作或更好。我已经用谷歌搜索了很多,它似乎与接口与对象有关,但我并不完全理解这种区别。我觉得我错过了一些非常明显的东西,但它还没有出现在我身上。

任何人都可以阐明我在做什么,以及为什么没有他们似乎一切都很好?

编辑:作为后续,我最终找到了这个,它解释了我在 Solidworks API 中所做的事情。毕竟,它似乎与接口并不完全相关。

4

1 回答 1

0

有很多文章可以解释对象和接口之间的区别,但我的理解是归结为:接口将行为与实现分开。在许多情况下,这用于允许将不同的对象集中用于相似的目的。例如,您可能有CarBikeTruck、和类Boat,它们都非常不同,但如果它们都使用一个名为 的方法实现接口,我不必关心底层差异来移动人们。TrainBusITransportationtransport(person, destination)

但是,在这种情况下,我怀疑该接口正在用于将来的向后兼容性。假设 Solidworks 在 10 到 15 年后达到ModelDoc34. 如果您的代码需要与 相同的属性和函数集ModelDoc2,您很可能会感到失望。但是,假设ModelDoc34实现了IModelDoc2接口——也就是说,开发人员提供了一组有限的新功能,这些功能与旧的属性和功能集完全匹配ModelDoc2只要您引用新的类名,您的代码仍然可以运行。与前面的类比类似,想象一下未来 50 年。汽车不再有任何手动控制,你只需在目的地打卡,它就会离开。如果开发人员想让这辆车向后兼容,他们可以实现IStandardCar接口,其中包括油门/刹车踏板和方向盘之类的东西。

如果您想编写尽可能面向未来的代码,您可以将变量声明为 type IModelDoc2。让 Solidworks API 完成确定底层对象类型的工作,您可以编写代码,就好像它始终只是一个ModelDoc2.

于 2015-09-09T18:24:42.857 回答