我可以在F#中提供Type作为Type提供者的输入吗?

时间:2012-03-03 15:21:32

标签: f# type-providers

我应该注意到这样做有什么缺陷吗?

您是否知道处理我可能遇到的同一个pb的现有代码?

THKS

1 个答案:

答案 0 :(得分:13)

不幸的是,您无法将类型作为静态参数传递给类型提供程序。使用MyProvider< "first argument", 42 >传递的静态参数必须是基本类型(如stringint和类似的)。我没有在文档中的任何位置看到该列表,但绝对不支持Type

执行此操作的问题是您可以将typeof<MyType>传递给MyType,其中type MyTest = MyTypeProvider<"System.Int32"> 在与使用类型提供程序的文件相同的文件中声明,因此F#编译器必须首先编译文件的第一部分,然后调用提供程序,然后继续。这听起来可能,但对于F#团队来说可能是低优先级的。

将类型信息传递给类型提供程序的最佳方法是为其指定类型名称,然后使用反射查找类型(这仅在类型来自已编译的程序集时才有效):

{{1}}