Проблемы с атрибутом ReflectedDefinition - PullRequest
1 голос
/ 22 января 2010

У меня есть этот код, который больше не компилируется, так как я в последний раз F # CTP 1.9.7.8:

[<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 перед новым: "Этот атрибут недопустим для использования с этим языковым элементом"

Это очень странно, потому что, например, Томас активно использует его и в конструкторах в своем проекте F # Web Tools. Это поведение по умолчанию сейчас? (Я пробовал с VS2010 бета2, и я могу воспроизвести). Я не вижу альтернативных или возможных обходных путей.

Точно так же я не могу поставить этот атрибут перед членами или свойствами (я не знаю, было ли это возможно с CTP до 1.9.7.8). Это работает, если я удаляю атрибут Struct (но все еще не в ctors), но я определенно нуждаюсь в них в Struct (members и ctors).

Спасибо

1 Ответ

3 голосов
/ 22 января 2010

Это была ошибка, которая теперь исправлена ​​в наших внутренних битах; в следующем выпуске ReflectedDefintion для конструкторов будет работать снова. (Не стесняйтесь присылать такие вопросы по адресу fsbugs@microsoft.com.)

...