我应该注意哪些陷阱?
您是否知道处理我可能遇到的相同问题的现有代码?
谢谢
很遗憾,您无法将类型作为静态参数传递给类型提供程序。使用MyProvider< "first argument", 42 >
传递的静态参数必须是原始类型(如string
、int
等)。我没有在文档中看到列表,但Type
肯定不受支持。
这样做的问题在于,您可能会将typeof<MyType>
传递给它,其中MyType
在使用类型提供程序的文件中声明,因此F#编译器首先必须编译文件的第一部分,然后调用提供程序,然后继续。这听起来可能是可行的,但对于F#团队来说可能是低优先级的。
向类型提供程序传递有关类型的信息的最佳方法是给它一个类型名称,然后使用反射查找该类型(仅当该类型来自已编译的程序集时才有效):
type MyTest = MyTypeProvider<"System.Int32">