是否可以在F#类型提供程序中使用System.Type作为静态参数?

时间:2013-12-26 05:04:43

标签: f# type-providers

我想知道是否可以使用System.Type作为F#类型提供程序中的静态参数,以便我可以编写类似的内容:

type HelperType = HelperProvider<typeof<int>>

我们的想法是,是否可以让类型提供程序根据某些.NET类型生成一些帮助程序类型。

1 个答案:

答案 0 :(得分:7)

不,类型提供者参数只能是原始类型(如intstring)。您可以做的最好是将类型名称作为字符串:

type HelperType = HelperProvider<"int">

这将为原语(和标准类型)提供技巧,但它不适用于先前在您使用类型提供程序的文件(或项目)中定义的类型。

据我所知,这绝对是F#团队一直在研究的问题 - 它将允许一些有趣的元编程应用程序。现在主要关注的是数据访问,所以这不是一个优先事项(出于好奇,你有什么应用程序?)

顺便说一下 - 将类型作为参数传递会引起一些有趣的棘手问题。例如,编译器将如何处理这样的事情:

type A = MyProvider<B>
and B = MyProvider<A>