2015-05-13 69 views
2

我有一个记录类型是否可以使用类型提供程序来生成类型扩展?

type Foo = {mutable x:int; mutable y:int} 

,我想自动生成一个clone功能吧: -

type Foo with 
    member m.clone() = {x=m.x;y=m.y} 

是否有可能产生使用类型提供这种类型的扩展?

+1

你为什么要这么做?这将是相同的价值,并且由于该类型是不可变的,它将*保持*相同的值。 –

+1

我的不好,添加了可变关键字。 – ais

+1

不幸的是,对元编程的支持有点......限制 - 无论是在C#还是F#中。这是一个预先可以做任何事情的阶段,但[混合类型提供程序显示在这里](https://skillsmatter.com/skillscasts/6159-meta-programming-madness-with-the-mixin-type-provider )实际上可以为您生成代码,它可能是许多合理用例之一。 –

回答

1

不,您不能通过类型提供程序定义C#风格的扩展成员或F#风格的扩展。

为F#4.0尝试了对提供的C#风格的扩展成员的支持,但最终被切断。您可以按照讨论here,然后here

相关问题