我想知道是否可以使用System.Type作为F#类型提供程序中的静态参数,以便我可以编写类似的内容:
type HelperType = HelperProvider<typeof<int>>
我们的想法是,是否可以让类型提供程序根据某些.NET类型生成一些帮助程序类型。
答案 0 :(得分:7)
不,类型提供者参数只能是原始类型(如int
和string
)。您可以做的最好是将类型名称作为字符串:
type HelperType = HelperProvider<"int">
这将为原语(和标准类型)提供技巧,但它不适用于先前在您使用类型提供程序的文件(或项目)中定义的类型。
据我所知,这绝对是F#团队一直在研究的问题 - 它将允许一些有趣的元编程应用程序。现在主要关注的是数据访问,所以这不是一个优先事项(出于好奇,你有什么应用程序?)
顺便说一下 - 将类型作为参数传递会引起一些有趣的棘手问题。例如,编译器将如何处理这样的事情:
type A = MyProvider<B>
and B = MyProvider<A>