一千萬個為什麽

搜索

如何強制靜態類實現特定的方法?

我需要創建一組靜態類,並且所有這些類都需要實現相同的方法。我想找到一種強制它們的方法。

我知道靜態類不能派生除System.Object之外的任何東西。我應該使用非靜態方法嗎?它可能是,但是這個類的方法都不會使用實例屬性......

我最好的機會是我應該使用單身人士。我將使用一個實例,但至少我不需要每次需要使用方法時實例化該類。

您建議的替代方案是什麽?

編輯:

我不會實現這些方法。我需要強制其他開發人員使用特定簽名實現特定方法。每個班級的所有簽名都是相同的。而已。

想象一下,您有一個靜態類,可以從辦公室的數據庫中獲取記錄。你有幾種方法可以做到這一點。由於這些方法都不共享變量,因此它們被標記為靜態,因此類也是如此。

現在,您和團隊中的其他開發人員必須對其他數據庫甚至是您無法控制的API執行相同操作,這無關緊要。您希望強制您的同事使用具有相同簽名的完全相同的方法來實現所有這些類。

您的意見總是受歡迎的,但現在我只想找到最接近的方式。

我可以使用一個抽象類,其他所有人都可以繼承。但由於這些方法不共享任何內容,我寧願不在每次需要時都實例化該類。

這就是為什麽我提到使用單例模式。我不應該這樣做嗎?

最佳答案

如果我正確地閱讀你的問題,除非你的方法有很多重載,否則單例不會起作用。

當我們談論接口和基類等時,如果您控制代碼,是否有理由不能只創建一組所有實現所需方法的類?當然,你需要記錄你做了什麽以及為什麽,但除了堅持“慣例”之外,你有沒有理由這樣做?

如果你使用靜態類,它不繼承System.Object以外的任何東西,並且不實現任何接口,那麽無論如何都不能互換它們。

EDIT Based on your edit, it looks like you're trying to enforce what should be a coding policy through code itself. Every development shop has its own Policies, Procedures, and Standards they follow, everything from documentation, to project layout, to method signatures. My current client is very strict about method signatures because we pass a lot of things to and from BizTalk and its a pain to change a BizTalk solution just because someone didn't want to follow the pattern the rest of the team is using.

如果團隊中的成員正在編寫這些靜態類和靜態方法,那麽我沒有看到為什麽你不能通過實施策略來實現這一目的(除了可能的辦公室政治)。

如果您必須通過代碼執行此操作,我認為您仍然堅持使用接口和實例方法。

如果你願意,一旦創建了這些實例方法,你就可以編寫靜態幫助器類作為包裝器(所以你個人來說,不必每次都實例化對象),但我不知道那會給你什麽。

轉載註明原文: 如何強制靜態類實現特定的方法?