比方說,我有很多很多不同的類實現一個接口:的解決方法是不能把代碼接口
public interface IHaveObjects
{
object firstObject();
}
(注:我不能讓一個抽象基類IHaveObjects的實現者已經有一個基類。)
現在我想添加一個新的方法到接口,以便接口的一個實現者可以有它的特殊行爲。然而,它在C#中禁止在提供一種方法體
public class ObjectHaverPlus : IHaveObjects
{
public override object IHaveObjects.firstObjectOrFallback()
{
return firstObject() ?? getDefault();
}
}
:理想情況下,我會做這樣的事情:
public interface IHaveObjects
{
object firstObject();
object firstObjectOrFallback()
{
return firstObject();
}
}
然後進入界面的一個實現者,並給它的覆蓋接口,並且我想避免讓IHaveObjects
的每個實施者落入firstObjectOrFallback()
的定義中。 (想象一下,如果有成百上千)
有沒有辦法做到這一點,沒有大量的複製粘貼?
爲什麼不爲該特殊情況創建第二個界面?你不能有多個類的繼承,但你可以實現多個接口。 – Tim