如何在F#中设置getter和setter的不同属性?

时间:2009-09-11 09:49:56

标签: f#

这似乎在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上设置不同的属性。

2 个答案:

答案 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),属性定位属性   特别是吸气剂和二传手   不支持。