使用类型提供程序而不是t4有什么好处吗?

dot*_*ter 2 .net t4 f# type-providers

据我所知,这两个工具都用于代码生成.使用t4生成的库可以在任何地方使用,类型提供程序只能与F#一起使用,那么重点是什么?

Ste*_*sen 6

T4严格来说是代码生成,而F#同时支持代码生成.和擦除类型,后者是F#类型提供者独有的功能.

而且,根据我的经验,T4非常笨重.在过去一年左右的时间里,我在C#项目中使用了很多它们,虽然非常有用,但我遇到的源控制和构建集成存在许多问题.老实说,我对F#类型提供商没有多少经验,但从我看到的情况来看,它甚至比T4更清晰.场景(特别是关于构建集成).


Jac*_* P. 5

作为@pad说,这可能的消耗从C#F#类型提供程序(取决于你如何实现你的类型提供商).

IMO,类型提供程序相对于T4的主要好处是它们作为.NET程序集分发,这使得从多个项目中使用它们变得更容易/更简单.AFAIK,T4要求您将宏文件复制(或以其他方式包含)到您想要使用它们的每个项目中.(自从我使用T4以来已经有几年了,所以它可能已经改变了.)

总的来说,我认为类型提供商和T4之间的功能有很大的重叠; 是的,如果您愿意,可以使用T4复制大部分类型提供程序功能.然而,你所做的函数编程越多,你就会越了解模块化 - 以恰当的数量 - 使函数式语言比它们的命令式函数更具生产力; 出于同样的原因,构造类型提供程序的方式以及它们与F#编译器集成的方式使它们在实践中比T4宏更好地使用.