【发布时间】:2017-11-18 07:40:46
【问题描述】:
我正在定义一个基类,它有一个返回类型 T 的方法。由此派生的类可以返回不同的类型。
public abstract class BaseTransport
{
public abstract T Properties<T>();
}
public class Car : BaseTransport
{
public override T Properties<T>()
{
return new CarProperties();
}
}
public class Bike : BaseTransport
{
public override T Properties<T>()
{
return new BikeProperties();
}
}
如果有所不同,则返回的 BikeProperties 和 CarProperties 都派生自 BaseProperties。
这可能吗?只是试图强制执行一个方法...
【问题讨论】:
-
如果有人打电话给
car.Properties<String>();怎么办? -
我明白你想要做什么,Generic 不能这样工作。如果没有使用
Car和Bike的示例,则无法回答这个问题。 -
在
Car和Bike中重命名类型参数也无济于事。 C# 区分大小写:t和T是完全不同的标识符。听起来您需要使 class 通用,而不是使 method 通用。 -
@JonSkeet 对不起,t 应该是 T,它已经被 Erik 编辑过
标签: c#