gpt4 book ai didi

.net - 如何密封被覆盖的属性(property)

转载 作者:行者123 更新时间:2023-12-03 21:38:18 26 4
gpt4 key购买 nike

假设我有一对显然是人为设计的C#类,如下所示:

public abstract class Foo {
public abstract int[] LegalValues { get; }
public virtual bool IsValueLegal(int val) {
return Array.IndexOf(LegalValues, val) >= 0;
}
}

和这个:
public class Bar : Foo {
static int[] _legalValues = new int[] { 0, 1 }; // whatever
public sealed override int[] LegalValues
{ get { return _legalValues; } }
public sealed override bool IsValueLegal(int val)
{ return base.IsValueLegal(val); }
}

我该如何在F#中执行此操作?属性的明显代码:
[<Sealed>]
override this.LegalValues with get() = // ...

[<Sealed>]
override this.IsValueLegal value = // ...

触发错误,因为SealedAttribute显然无法应用于成员。
我当然可以密封整个类,从而密封所有成员,但是(这是 非常重要的,但是)是我的目标是将现有的类签名 精确地匹配,并且基类具有其他虚拟的/abstract成员,理想情况下应保持可重写状态。

最佳答案

F#对OO的支持目前存在一些限制,因此通常不应期望能够产生与任意C#类层次结构相同的F#类层次结构。据我所知,没有任何方法可以覆盖和密封虚拟方法。

关于.net - 如何密封被覆盖的属性(property),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4339657/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com