c# - 在实现中用派生类覆盖接口(interface)方法返回类型

标签 c# interface polymorphism

我正在尝试在类中实现 (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
{

}

关于c# - 在实现中用派生类覆盖接口(interface)方法返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8564593/

相关文章:

c# - SplashScreen - 无法找到来自另一个项目的图像

java - 该方法不适用于参数

java - 如何在概念上添加多态性?

c++ - 在C++中有实现模板接口(interface)的好方法吗?

haskell - 安全且多态的 toEnum

java - Java中的静态绑定(bind)和动态绑定(bind)

c# - Visual Studio 2015 vNext 和 Windows 身份验证

c# - 文本框中文本的消失和重新出现

c# - 使用 WebBrowser 控件时如何获得网站图标?

pointers - 指针的 slice ,当传递给对象时,得到具有其他地址的指针