FSharp ProvidedConstructor参数

时间:2013-11-06 08:44:40

标签: f# type-providers

我正在尝试使用我在不同地方找到的示例来实现typeprovider。

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

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

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

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

必须调用哪种代码才能实现此目的。或者我必须采取另一种方法?

1 个答案:

答案 0 :(得分:3)

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

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

请务必阅读this tutorial