IoC container for VBA



在vba中有一个很好的阅读:

https://rubberduckvba.wordpress.com/2016/07/07/OOP-VBA-VBA-PPT-2-FACTIORS-and-Cheap-Hotels/

现在,下一步将是在VBA中使用IOC容器。但是我想知道这是否有可能!我是VBA的新手,我无法弄清楚一些事情:

  1. 如果在VBA中完成,则VBA没有与C#相等的名称空间或类型。那么我的查找表如何存储类型的唯一键?
  2. 我考虑过在C#中编写COM DLL并在那里实现IOC,但我无法弄清楚如何将接口类型传递给COM接口。我什至无法实例化接口将其作为com的对象传递。

我是否仅使用模块使用字符串并在VBA中实现名称空间?

ps:我没有找到用于VBA的IOC容器的任何易位实现,因此,如果有的话,我全部耳朵!

这是我们一直在追逐的文字圣杯:从C#代码中实例化VBA类中的VBA类的能力。我们弄清楚如何执行此操作的那一刻,一个用于VBA代码的IOC容器绝对可能是一种可能性,并且绝对将与Rubberduck一起运送和一个成熟的模拟框架。

可能是不可能的VBA解决方案,因为正如@this所提到的,New在没有类型系统的情况下动态地上一个类实例,没有反思,...纯黑魔法巫师。

搁置技术问题,必须怀疑:IOC容器会产生如此巨大的不同吗?

事实是,不会。依赖注入不需要IOC容器,"可怜的人的di"效果很好,我可能会补充,甚至是可取的。

我提出,如果您达到了IOC容器对您的VBA项目有意义的地步,并且您了解有关DI和SOLID的所有内容,并相应地编写您的代码...然后[不要从VBA带走任何东西,但是]我的评估是,您完全无法准备从VBA继续前进,并使用更多具有OOP能力的语言,例如vb.net或c# - 并在发现全新的范围通过参数化的构造函数,类继承,代表,Lambdas,Linq等的可能性。

最新更新