【发布时间】:2015-05-23 09:22:16
【问题描述】:
我想创建一个支持连接到另一个过程的过程类,如下所示:a|b|c|d(这应该导致过程采用 a 的输入类型,并给出 d 的输出类型)
class Procedure<I,O>
{
public Func<I,O> func;
public Procedure(Func<I, O> func)
{ this.func = func; }
public static Procedure<I, O> operator| (Procedure<I, M> proc1, Procedure<M, O> proc2)
{ return new Procedure<I,O>((x) => proc2.Process(proc1.Process(x))); }
public O Process(I input)
{ return func.Invoke(input); }
}
编译器抱怨它找不到 M。通常我会在方法名称之后添加,但是在这种情况下,它会被识别为操作符名称的一部分。做什么?
顺便说一句,我正在尝试将我的 Scala 库移动到 C# 中。
【问题讨论】:
标签: c# generics operator-overloading function-pointers