假设我有一个许多不同类实现的接口:
public interface IHaveObjects
{
object firstObject();
}
(注意:我不能让它成为抽象基类,因为 IHaveObjects 的实现者可能已经有一个基类。)
现在我想向接口添加一个新方法,以便接口的一个实现者可以对它有特殊的行为。理想情况下,我会做这样的事情:
public interface IHaveObjects
{
object firstObject();
object firstObjectOrFallback()
{
return firstObject();
}
}
然后转到接口的那个实现者并给它覆盖:
public class ObjectHaverPlus : IHaveObjects
{
public override object IHaveObjects.firstObjectOrFallback()
{
return firstObject() ?? getDefault();
}
}
但是,在 C# 中禁止在接口中提供方法体,我想避免让每个实现者IHaveObjects
都放弃firstObjectOrFallback()
. (想象一下,如果有数百或数千个)
有没有办法在没有大量复制粘贴的情况下做到这一点?