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