C# C从派生接口中的继承接口专门化泛型接口
我想不出更好的标题,所以我将尝试用一个例子来解释: 我有两节课。一个来源于另一个:C# C从派生接口中的继承接口专门化泛型接口,c#,generics,inheritance,interface,C#,Generics,Inheritance,Interface,我想不出更好的标题,所以我将尝试用一个例子来解释: 我有两节课。一个来源于另一个: public class Base { } public class Derived : Base { } 和两个接口。同样,其中一个派生自另一个,并且都实现了两个类之一的枚举: public interface BaseEnumeration : IReadOnlyList<Base> { } public interface DerivedEnumeration : BaseEnumerat
public class Base { }
public class Derived : Base { }
和两个接口。同样,其中一个派生自另一个,并且都实现了两个类之一的枚举:
public interface BaseEnumeration : IReadOnlyList<Base> { }
public interface DerivedEnumeration : BaseEnumeration, IReadOnlyList<Derived> { }
虽然我必须在DerivedEnumerator中实现两次GetEnumerator,但是当我尝试使用它们的函数时,编译器抱怨两个接口之间存在歧义
我已经尝试创建一个通用的基本接口,但是我无法从其他派生接口转换到派生接口
那么我该如何解决这个问题呢?您试图解决这个问题的方法无论如何都不会奏效。。首先让我说,有点奇怪,你需要在一个单一的类型定义中收集基类和派生类。。但我不会专注于那部分,因为那是你的。无论什么要枚举基集合和派生集合,需要在接口中明确定义它们,如下所示
public interface IBaseEnumeration {
IReadOnlyCollection<Base> BaseCollection { get; }
}
public interface IDerivedEnumeration : IBaseEnumeration {
IReadOnlyCollection<Derived> DerivedCollection { get; }
}
但是,派生自Base的事实将导致只使用第一个接口IBaseEnumeration:IReadOnlyCollection的解决方案,因为Base覆盖了这两种实例类型