同时定义与fsharp中的实例属性相同名称的静态属性

时间:2012-03-08 11:20:47

标签: f# static properties override

我希望能够使用这两种风格

      let refdataservice  = BBGReferenceData.Acquire
         //some code
      BBGReferenceData.Release

      let refdataservice  = BBGReferenceData.Acquire
         //some code
       refdataservice.Release

但是我似乎无法同时定义静态属性和同名的实例属性。

  static member Release with get() = counter <- counter - 1
                                     if counter = 0 then instance.Value.Stop()
  //does not work, tells me that Release is not a static property
  member x.Release with get() = BBGSession.Release

尝试覆盖不起作用

  //'No abstract property was found that corresponds to this override'
  override x.Release with get() = BBGSession.Release

我该怎样绕过这个?

1 个答案:

答案 0 :(得分:1)

我认为你不能解决这个问题;不幸的是,你需要为一个属性选择一个不同的名称。我不确定这是预期的行为还是无意的限制,但你不能定义两个具有相同名称的属性,即使一个是静态的而另一个不是。同样,属性名称也必须与方法名称不同,即使它们的静态不同。