f# - FSharp 提供的构造函数参数

标签 f# type-providers

我正在尝试使用我在不同地方找到的示例来实现类型提供程序。

我想要的是能够创建一个构造函数,它将提供的参数分配给正确的属性。结果将与下面的类型做同样的事情。

type SomeType(arg1: int, arg2: string) = 
    member this.Arg1 = arg1
    member this.Arg2 = arg2

我尝试了不同的方法,但我就是无法传递 args 列表中的第一个参数。

ProvidedConstructor(
    parameters = parameters, 
    InvokeCode = (fun args -> ??)

必须调用什么样的代码才能实现这一点。还是我必须采取其他方法?

最佳答案

您提供的类型(您传递给 ProvidedTypeDefinition baseType 参数的类型)的底层运行时表示是什么? ProvidedConstructor InvokeCode 是一个接受表达式列表并返回基础类型表达式的函数。例如,如果运行时表示是一个 2 元素元组,InvokeCode 将是这样的:

InvokeCode = (fun [arg1;arg2] -> <@@ (%%arg1:int), (%%arg2:string) @@>)

请务必阅读 this tutorial

关于f# - FSharp 提供的构造函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19807437/

相关文章:

f# - 可区分联合中类型之间的转换

.net - F# 和 op_GreaterThan

f# - Azure 和 F# 3.0 类型提供程序

f# - 使用F#生成类型提供程序类型作为泛型类型参数

entity-framework - Entity Framework 的类型提供程序

f# - address-of 和 ref 运算符之间的差异

f# - F# 的 monad 实现在可用关键字数量方面是独一无二的吗?

f# - F# 代码片段在 MONO 下不起作用

f# - 使用变量作为 F# 类型提供程序引用的文件的路径

f# - 类型提供程序可以作为参数传递给函数吗