我正在尝试在类中实现(C#)接口(interface)方法,返回派生类型而不是接口(interface)中定义的基本类型:

interface IFactory
{
    BaseCar GetCar();
}

class MyFactory : IFactory
{
    MyCar GetCar()
    {
    }
}

当然,在哪里:
class MyCar : BaseCar
{

}

但是,发生以下错误:

“MyFactory”未实现接口(interface)成员“IFactory.GetCar()”。 'MyFactory.BaseCar()'无法实现IFactory.GetCar()',因为它没有匹配的返回类型'BaseCar'。

谁能指出我为什么失败,以及解决该问题的最佳方法是什么?

最佳答案

使用泛型

interface IFactory<T> where T: BaseCar
{
    T GetCar();
}

class MyFactory : IFactory<MyCar>
{
    MyCar GetCar()
    {
    }
}


class MyCar : BaseCar
{

}

07-26 07:42