2016-10-20 153 views
1

我讀了關於使用擴展方法向接口添加方法,但我也在想爲什麼不從包含虛擬方法的接口派生出一個基類(當然,如果你從一開始就具有靈活性)。如果需要的話,使用基類還會增加重寫的靈活性。接口擴展 - 基類或擴展方法

+1

基類不是更靈活。你基本上是強迫接口的每個實現來擴展這個基類,而不是選擇它自己的基類,或者根本沒有。 – BoltClock

+1

在許多不能更改類的情況下,這種方法不起作用...現在,您的實際*問題*是什麼? –

回答

3

兩者都有不同的優點。

基類:

  • 你可以存儲在私人領域狀態
  • 如果需要,可以在子類中覆蓋這些方法。
  • 實現是在一個地方,而不是分散在(可能)很多擴展方法類。

擴展方法:

  • 不需要你的界面實施者從給定的基類繼承。由於C#不支持多重繼承,這可能是一個重要的問題。
  • 不需要訪問該類的源代碼。