C# 为什么会出现CS0695?

C# 为什么会出现CS0695?,c#,generics,compiler-errors,C#,Generics,Compiler Errors,从 “泛型类型”不能同时实现“泛型接口”和“泛型接口” 接口,因为它们可能会为某些类型参数统一 替换 当泛型类实现多个 相同泛型接口的参数化,并且存在 类型参数替换将使两个接口 完全相同的要避免此错误,请仅实现其中一个接口, 或者更改类型参数以避免冲突 不能将PipelineElementBase和PipelineElement接口同时实现到抽象类 正如错误页面所说,您应该 仅实施其中一项或 更改类型参数以避免冲突 从 13.4.2实施接口的唯一性 由泛型类型声明实现的接口必须保留 对于所有

“泛型类型”不能同时实现“泛型接口”和“泛型接口” 接口,因为它们可能会为某些类型参数统一 替换

当泛型类实现多个 相同泛型接口的参数化,并且存在 类型参数替换将使两个接口 完全相同的要避免此错误,请仅实现其中一个接口, 或者更改类型参数以避免冲突

不能将
PipelineElementBase
PipelineElement
接口同时实现到抽象类

正如错误页面所说,您应该

  • 仅实施其中一项或
  • 更改类型参数以避免冲突

13.4.2实施接口的唯一性

由泛型类型声明实现的接口必须保留 对于所有可能的构造类型都是唯一的。如果没有这条规则,它将 无法确定要调用的正确方法 构造类型。例如,假设一个泛型类声明 允许按以下方式书写:

即使
Derived
同时实现了
I
I
。代码

interface I<T>
{
  void F();
}
class Base<U>: I<U>
{
  void I<U>.F() {…}
}
class Derived<U,V>: Base<U>, I<V> // Ok
{
  void I<V>.F() {…}
}
ix=new-Derived();
x、 F();
调用
派生的
中的方法,因为
派生的
有效 重新实施
I
(§13.4.6)


[SO编辑强调。]

哪种冲突?有了这些类型约束,
就不会发生冲突。@main--“在确定所有可能的构造类型时,不考虑约束声明。”这是问题的关键,但这个答案太过详细地隐藏了这句重要的话。我删除了我的注释,没有得到任何有用的东西。标记为favorite,我也想知道答案:)+但问题是1!
public interface MyInterface<A> { }
public class MyClass: MyInterface<string>, MyInterface<int> { }
interface I<T>
{
    void F();
}
class X<U,V>: I<U>, I<V>
{
    void I<U>.F() {...}
    void I<V>.F() {...}
}
I<int> x = new X<int,int>();
x.F();
interface I<T>
{
  void F();
}
class Base<U>: I<U>
{
  void I<U>.F() {…}
}
class Derived<U,V>: Base<U>, I<V> // Ok
{
  void I<V>.F() {…}
}
I<int> x = new Derived<int,int>();
x.F();