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