我有一个代码,自从我在上一个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在new之前对reflectedDefinition属性发出此错误消息:
“此属性对此语言元素无效”
这很奇怪,因为例如,Tomas在他的f_web工具项目中也广泛地在构造函数上使用它。
现在是默认行为吗?(我试过VS2010 Beta2,我可以重新编写)。我看不到任何替代或可能的解决办法。
同样,我不能将这个属性放在成员或属性前面(我不知道1.9.7.8之前的CTP是否可能)。如果我删除struct属性(但仍然不在ctors上),但我确实需要在struct(成员和ctors)上使用它们,那么它会起作用。
谢谢