【发布时间】:2019-01-28 08:42:19
【问题描述】:
我有以下抽象函数。
public abstract Func<IEnumerable<TInput>, int, TIndexed> IndexedObjectConstructor { get; }
我的问题与实现方法有关。 第一个:我创建了一个具有相同签名的方法
public IIndexedOhlcv Test(IEnumerable<IOhlcv> l, int i)
{
return new IndexedCandle(l, i);
}
,将其分配给 Func。
public override Func<IEnumerable<IOhlcv>, int, IIndexedOhlcv> IndexedObjectConstructor = Test;
但是,这显示一个错误
错误 CS0106 修饰符“覆盖”对此项无效
我知道这可以使用 Lambda 解决,如下所示:
public override Func<IEnumerable<IOhlcv>, int, IIndexedOhlcv> IndexedObjectConstructor => Test;
或者
public override Func<IEnumerable<IOhlcv>, int, IIndexedOhlcv> IndexedObjectConstructor
=> (l, i) => new IndexedCandle(l, i);
我的问题是我的“IndexedObjectConstructor = Test;”不工作?
【问题讨论】:
-
minimal reproducible example 在这里会很棒。我想复制、粘贴和编译你的代码。
-
为什么是抽象的 Func?
-
为什么要将 Func 作为抽象?
-
它不是
abstract Func- 它是一个abstract属性,它返回一个Func。