FSharp提供的构造函数参数

3

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

我的想法是创建一个构造函数,将提供的参数分配给正确的属性。结果应该与以下类型执行相同的操作。

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

我尝试了不同的方法,但我只是无法通过参数列表中的第一个参数。
ProvidedConstructor(
    parameters = parameters, 
    InvokeCode = (fun args -> ??)

我需要调用哪种代码才能达到这个目的?还是我需要采取其他方法?
1个回答

3
你提供的类型(你传递给ProvidedTypeDefinitionbaseType参数)将具有什么基础运行时表示形式?ProvidedConstructor InvokeCode是一个函数,它接受表达式列表并返回底层类型的表达式。例如,如果运行时表示是一个2元组,则InvokeCode将是这样的:
InvokeCode = (fun [arg1;arg2] -> <@@ (%%arg1:int), (%%arg2:string) @@>)

Make sure to read this tutorial


嗨Gustavo,感谢您的回复。我不清楚的是Expr返回基础类型。 - BBL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接