
[英]Inherit from a base class and provide the inheritance type to overridden method
[英]Cannot return `this` from overridden base class method
即使签名都适当,我也无法从具体的方法实现中返回this
。 这里的想法是拥有一个流畅的生成器,因此子类BuildNewCar()
需要返回子类类型SimpleCarBuilder
。
public class Car {}
abstract class BaseCarBuilder
{
public abstract T BuildNewCar<T>();
}
class SimpleCarBuilder : BaseCarBuilder
{
Car _car;
public override SimpleCarBuilder BuildNewCar<SimpleCarBuilder>()
{
_car = new Car();
return this;
}
}
我不断得到:
无法将类型'SimpleCarBuilder'隐式转换为'SimpleCarBuilder'
编译器将SimpleCarBuilder视为通用类型的名称,而不是要使用的实际类型。 它不能将实际类型SimpleCarBuilder转换为名为SimpleCarBuilder的通用类型参数,该参数实际上可以表示任何类型。
如果您使用实现抽象类功能,则会看到编译器使用T作为通用类型参数名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.