即使签名都适当,我也无法从具体的方法实现中返回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'
答案 0 :(得分:2)
编译器将SimpleCarBuilder视为通用类型的名称,而不是要使用的实际类型。它无法将实际类型的SimpleCarBuilder转换为名为SimpleCarBuilder的通用类型参数,该参数实际上可以表示任何类型。
如果您使用实现抽象类功能,则会看到编译器使用T作为通用类型参数名称。