这似乎在C#中运行良好:
class A : System.Attribute { public A() {} }
public class B
{
public int X
{
[A] get { return 1; }
[A] set { }
}
}
但是在F#中,当我尝试在属性getter和setter上设置属性时,我无法解决语法错误:
type A() = inherit System.Attribute()
type B =
member this.X
with [<A>] get () = 1
and [<A>] set (x : int) = ()
有办法吗?
我的目标是在getter和setter上设置不同的属性。
答案 0 :(得分:2)
MSDN-documentation建议如下:
type A() = inherit System.Attribute()
type B =
[<A>]
member this.X with get () = 1
[<A>]
member this.X with set (x : int) = ()
......但根据.Net Reflector,它似乎没有产生预期的IL。对我来说看起来像个错误。
编辑:或.Net Reflector ...
中的错误编辑2:提交给fsbugs@microsoft.com的错误报告
答案 1 :(得分:1)
为了记录,F#团队的回复是:
现在(以及即将到来的 Beta2),属性定位属性 特别是吸气剂和二传手 不支持。