【问题标题】:FSharp ProvidedConstructor ArgumentsFSharp 提供的构造函数参数
【发布时间】:2013-11-06 08:44:40
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: f# type-providers


    【解决方案1】:

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

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

    请务必阅读this tutorial

    【讨论】:

    • 您好 Gustavo,感谢您的回复。我不清楚的是 Expr 返回基础类型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-09
    相关资源
    最近更新 更多