我应该注意到这样做有什么缺陷吗?
您是否知道处理我可能遇到的同一个pb的现有代码?
THKS
答案 0 :(得分:13)
不幸的是,您无法将类型作为静态参数传递给类型提供程序。使用MyProvider< "first argument", 42 >
传递的静态参数必须是基本类型(如string
,int
和类似的)。我没有在文档中的任何位置看到该列表,但绝对不支持Type
。
执行此操作的问题是您可以将typeof<MyType>
传递给MyType
,其中type MyTest = MyTypeProvider<"System.Int32">
在与使用类型提供程序的文件相同的文件中声明,因此F#编译器必须首先编译文件的第一部分,然后调用提供程序,然后继续。这听起来可能,但对于F#团队来说可能是低优先级的。
将类型信息传递给类型提供程序的最佳方法是为其指定类型名称,然后使用反射查找类型(这仅在类型来自已编译的程序集时才有效):
{{1}}