是否可以通过类型提供程序创建泛型类型
[<TypeProvider>]
type SampleTypeProvider(config: TypeProviderConfig) as this = 
...
//the below would be the generated type
type A<'b> () = 
     member this.C() : 'b = ...
     member this.D() : 'b = ...
//
...
[<assembly:TypeProviderAssembly>] 
do()
  ....
所以在使用场景中看起来会有所作为
#r @".\bin\Debug\SampleTypeProvider.dll"
type A = SampleTypeProvider.A
type intA = A<int>
type strA = A<str>
如果可能的话 - 我该如何处理它.
使用标准方法这是不可能的。我尝试环顾四周,但找不到规范的参考,但这是一个已知的限制,并且已经有各种建议来解除该限制。
Ross McKinlay 有一个有点极端的项目,称为Mixin 类型提供程序,它通过在类型提供程序运行时实际生成一个包含 F# 源代码的文件来解决这个问题(然后您可以将此文件包含在您的项目中)。这可能比类型提供者更多地是代码生成,但他对这个主题的谈论也很好地解释了一些限制。
如何解决这个问题很大程度上取决于类型提供者的目的。如果您只需要有限数量的类型,您可以使用静态参数之类的东西并写入A<"int">或A<"string">。您还可以将普通的未提供的泛型类型与非泛型提供的类型混合(以某种巧妙的方式)。但我认为你需要写更多关于你的具体用例才能得到更好的答案。