我在这个过于复杂的类层次结构中遇到编译错误。我想知道是否与尝试混合使用泛型的DeepCopy()有关。
public interface IInterface<T>
{
IInterface<T> DeepCopy();
}
public abstract class AbstractClass<T> : IInterface<T>
{
public abstract IInterface<T> DeepCopy(); // Compiler requires me to declare this public
}
// Everything good at this point. There be monsters below
public class ConcreteClass: AbstractClass<SomeOtherClass>
{
ConcreteClass IInterface<SomeOtherClass>.DeepCopy()
{
return new ConcreteClass;
}
}
我收到以下编译错误:
'IInterface<...>.DeepCopy()': containing type does not implement interface 'IInterface<SomeOtherClass>'
答案 0 :(得分:3)
返回bool
更改 ConcreteClass IInterface<SomeOtherClass>.MyMethod()
到bool IInterface<SomeOtherClass>.MyMethod()
修改强>
然后你不能使用接口的显式实现,因为这不符合你需要实现它的抽象类的契约。
public override IInterface<SomeOtherClass> DeepCopy()
{
return new ConcreteClass();
}
答案 1 :(得分:2)
错误是因为DeepCopy()
的返回类型与接口中的声明不匹配。
除此之外,你有一个不同的问题。抽象类已经从接口实现了该方法,但在具体类中,您没有实现抽象方法。您应该拥有以下实现,而不是现在的实现:
public override IInterface<SomeOtherClass> DeepCopy()
{
}
这将在抽象类中实现抽象方法,该方法在接口中自动实现该方法。您需要在抽象类中实现抽象方法的原因是因为该类需要实现该接口。这是班级的要求。