2012-06-23 86 views
0

我發佈了一個公共類作爲我的C#框架的一部分,以便用戶能夠在我的應用程序中註冊。我不希望用戶擴展我的課程,因此我將其標記爲sealed。現在我有一些用戶報告說他們在該課程中看到的方法多於我提供的方法。經過一番調查,似乎這些用戶已經定義了(通過智能感知)顯示的擴展方法,就像它們在我的公開密封類中定義的一樣。禁止擴展方法

問題 有沒有一種方法可以禁止用戶在我的公共密封類上定義擴展方法?

+2

我很好奇...爲什麼你會禁止他們寫擴展方法?畢竟,他們只能從擴展方法中調用你班級的公共成員。 –

+7

構造你的問題的另一種方法是「有什麼方法可以禁止人們在他們自己的靜態類上編寫一個靜態方法,它將我的對象作爲第一個參數」(擴展方法是圍繞這個的語法糖)。答案當然是不。 – Nik

+0

@MiroslavPopovic我想避免intellisense噪音 – GETah

回答

8

不,你不能。說實話,我不明白你爲什麼想要。如果您有想要的用戶使用擴展方法,請讓他們這樣做。沒有人去強迫他們這樣做,它可能會讓他們的生活更輕鬆。至少在你的類型被密封的時候,你知道如果有人報告出乎意料的可用方法,他們必須是是擴展方法。

請注意,任何人都可以在object上定義擴展方法,即使有禁止擴展方法的方法,也可以使用總是

+0

感謝Jon,我只是想讓我的課在intellisense中保持整潔 – GETah

+2

@GETah:我看到它的方式,它會讓你自己的用戶變得「髒」 - 所以把它留下來給他們。如果他們想要一個「乾淨的」智能感知,他們不應該添加擴展方法。如果他們不這樣做,你是誰來阻止他們? –