我想用这个例子会更清楚些。我们希望在处理器类中看到两个具有不同参数的方法。
“int进程(int值);”
“双进程(双值);”
但是编译器对iroot说:
“generics.iroot”不能同时实现“generics.iprocess”和“generics.iprocess”,因为它们可能为某些类型参数替换而统一。

public class Processor : IRoot<int, double, int, double>
{
    // Here we want 2 methods
    public int Process(int item) { }
    public double Process(double item) { }
}

public interface IProcess<TResult, TItem>
{
    TResult Process(TItem item);
}

public interface IRoot<TR1, TR2, TItem1, TItem2> :
    IProcess<TR1, TItem1>,
    IProcess<TR2, TItem2>
{

}

最佳答案

您可能会使用这种实现。您将丢失一些通用参数:

public interface IBase<TM, TPkey>
    where TM : bType
    where TPkey : new ()
{
    TM Get(TPkey key);
}

public interface IABase<TPK> : IBase<ConcreteTmA, TPK> {}
public interface IBBase<TPK> : IBase<ConcreteTmB, TPK> {}

public class Root <TPK> :
    IABase<TPK>,
    IBBase<TPK>
    where TM : MType
    where TPM : PMType
    where TPK : new()
{
    ConcreteTmA IABase.Get(TPK key)
    {
    }

    ConcreteTmB IBBase.Get(TPK key)
    {
    }
}

08-05 18:47