3
更好地编写带有COM限制的.NET库,还是将.NET库与Interop分开?
我碰到了一篇有趣的文章:我如何爱上 CodeProject上的COM互操作性,这让我开始思考... 作者认为,他们不希望在.NET库中有任何COM-ity,因为它剥夺了.NET库的美感。相反,他们宁愿编写一个单独的Interop库,以将其.NET库公开给COM。该Interop库将处理以下事实:COM不支持带参数,重载方法,泛型,继承,静态方法等的构造方法。 虽然我认为这很新颖,但它不只是使项目变得复杂吗? 现在,您需要对.NET库和一个Interop库进行单元测试。 现在,您需要花时间弄清楚如何解决漂亮的.NET库并将其公开给COM。 您需要有效地将班级人数增加一倍或两倍。 我当然可以理解您是否需要您的库来支持COM和非COM。但是,如果仅打算使用COM,这种设计是否会带来我看不到的好处?您仅获得C#语言的好处吗? 还是通过提供包装器使库的版本控制变得容易?是否通过不需要使用COM来使您的单元测试运行更快?