假设我有一个抽象基类BaseTimeCollection和至少一个从该基类继承的具体类ConcreteTimeCollection。
我希望我的基类可以从ICollection继承。
从ICollection继承需要我提供一些方法的实现,包括IEnumerable.GetEnumerator()和IEnumerable.GetEnumerator。
我不想在BaseTimeCollection中实现这些方法,而是更喜欢在每个具体类中单独实现它们。
这就是我遇到麻烦的地方。
GetEnumerator方法需要明确声明,因为它们都具有相同的名称但不同的返回类型。然而,似乎一旦我明确了签名,我就不能再使用abstract修饰符了。本质上,我被迫在我的基类中实现GetEnumerator方法。
我希望我的基类可以从ICollection继承。
从ICollection继承需要我提供一些方法的实现,包括IEnumerable.GetEnumerator()和IEnumerable.GetEnumerator。
我不想在BaseTimeCollection中实现这些方法,而是更喜欢在每个具体类中单独实现它们。
这就是我遇到麻烦的地方。
GetEnumerator方法需要明确声明,因为它们都具有相同的名称但不同的返回类型。然而,似乎一旦我明确了签名,我就不能再使用abstract修饰符了。本质上,我被迫在我的基类中实现GetEnumerator方法。
public abstract class BaseTimeCollection : ICollection<Time>
{
abstract IEnumerator IEnumerable.GetEnumerator(); // compile error: The modifier 'abstract' is not valid for this item
abstract IEnumerator<Time> IEnumerable<Time>.GetEnumerator(); // compile error: The modifier 'abstract' is not valid for this item
}
public class ConcreteTimeCollection : BaseTimeCollection
{
IEnumerator IEnumerable.GetEnumerator()
{
// this is where I would like to provide my implementation for IEnumerable.GetEnumerator()
}
IEnumerator<Time> IEnumerable<Time>.GetEnumerator()
{
// this is where I would like to provide my implementation for IEnumerable<Time>.GetEnumerator()
}
}
我错过了什么?
有没有一种方法可以将
GetEnumerator
方法的实现推迟到具体的类中?