1

我有这样的代码,因为我去年F#CTP 1.9.7.8已经不编译:与ReflectedDefinition属性问题

[<Struct>] 
type MyStruct = 
    val mutable private _i : int 
    val mutable private _s : single 
    val mutable private _i2 : int 

    member t.I = t._i 
    member t.S = t._s 
    member t.I2 with get() = t._i2 * 2 and set(value) = t._i2 <- value * 2 
    member t.Foo() = t._i * t._i 

    [<ReflectedDefinition>] new (x, y, z) = {_i = x; _s = y; _i2 = z} 

VS与上ReflectedDefinition此错误消息抱怨属性的新未来:“此属性不适用于此语言元素“

这很奇怪,因为例如Tomas在他的F#Web Tools项目中也在构造函数中广泛使用它。 这是现在的默认行为? (我已经尝试过VS2010 beta2,我可以重播)。我没有看到任何替代或可能的解决方法。以同样的方式,我不能把这个属性放在成员或属性前(我不知道在1.9.7.8之前是否可以用CTPs)。它工作,如果我删除Struct属性(但仍然不在ctors),但我最终需要他们在Struct(成员和ctors)。

谢谢

回答

3

这是一个现在在我们的内部位固定的错误;在下一个版本中,构造函数的ReflectedDefintion将再次工作。 (随意发送这样的问题到[email protected]。)

+0

好的,我会的!谢谢! – Stringer 2010-01-22 00:41:08