2012-11-22 108 views
3

我在派生類的不同實例之間有公共數據。 因此,爲了共享通用數據屬性,我使它們在基類中是靜態的。 但是靜態公共屬性不能在接口中聲明。 如果我們嘗試,我們得到如下錯誤:C#:基類中的靜態成員

"cannot implement an interface member because it is static."

是否有任何已知的設計模式或者這種需求的最佳做法?

+0

您應該改用抽象類。 – looper

回答

2

接口定義了一個接口。只要你有任何「真實」的東西,不管是方法實現還是共享數據,你都需要一個類,在這種情況下需要一個抽象類。

另一種方法是保持接口,但添加單例來保存與實現接口的類有關的數據。如果您需要使用界面,那麼我認爲這是一條路。只需命名單身人士,它顯然它在邏輯上與界面鏈接,並且文檔,界面的實現應該使用它。在你的情況下,靜態類與數據可能是足夠的,而不是完整的單例實現,但我不會在這裏進入,整個「靜態類與單例」是有點爭議的主題。

9

您最好使用抽象基類來代替。