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

标签 f# type-providers

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

type HelperType = HelperProvider<typeof<int>>

这个想法是,是否可以让类型提供程序基于一些 .NET 类型生成一些辅助类型。

最佳答案

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

type HelperType = HelperProvider<"int">

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

据我所知,这绝对是 F# 团队一直在研究的东西——它将允许一些有趣的元编程应用程序。目前的主要重点是数据访问,所以这不是一个优先事项(出于好奇,您有什么应用程序?)

顺便说一句 - 将类型作为参数传递可能会导致一些有趣的棘手问题。例如,编译器将如何处理这样的事情:
type A = MyProvider<B>
and B = MyProvider<A>

关于f# - 是否可以在 F# 类型提供程序中使用 System.Type 作为静态参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20779413/

相关文章:

.net - Microsoft 的 .net CLR 是否在运行时内联小函数?

file - 在 F# 中从文本文件读取输入--使用换行符读取输入时出现问题

f# - 类型提供者中奇怪的 None 行为

F# 类型提供者打印

f# - 为 Microsoft 的 Luis 编写 F# Type Provider 的好方法是什么?

F#/.net 中的正则表达式/CTFG

f# - 如何在函数内将静态参数传递给 f# 中的类型提供程序

f# - 如何创建 F# 可变选项类型?

f# - 为什么 WSDL 类型提供程序不能消除重载的歧义?

linq-to-sql - 使用哑 DTO 的 F# 数据库类型提供程序