2011-09-14 25 views
-1

我有一個自定義控件,將其稱爲ctrlFoo,它源自System.Web.UI.Control隱藏派生屬性不起作用? C#

當這個自定義控件被實例化時,我可以看到所有的System.Web.UI.Control的公共屬性,它們在intellisense中有些煩人,因爲它們有很多。

ctrlFoo我試過

private new string SkinID { get; set; } 

但我仍然可以看到的ctrlFoo的初始化的情況下該屬性。

任何人都可以提供任何其他建議嗎?

+4

爲什麼要隱藏你的類有完全有效訪問的函數?如果它們不適用,也許值得考慮你是否繼承了正確的課堂......? –

+0

@Kiley Naro System.Web.UI.Control是基類。 – maxp

+2

我想這只是時間問題,直到我聽到有人稱IntelliSense「令人討厭」。讓我告訴你如何在1990年IntelliSense工作... – Jon

回答

0

您仍然可以看到它,因爲您看到的是公開的System.Web.UI.Control.SkinID

您可以通過爲getset訪問者設置訪問修飾符private來隱藏該屬性,但基本屬性必須是虛擬的或抽象的才能被重寫。

2

你錯過了從Control繼承的點。如果ctrlFoo確實是Control,那麼您不應該隱藏Control所擁有的屬性。 Control有一個SkinID,所以ctrlFoo也應該有一個SkinID

如果您不喜歡Intellisense中出現的內容,請更改您的Intellisense設置(我從未聽過任何人抱怨過IntelliSense)。

0

您不能隱藏繼承的屬性。這會違反Liskov替代原則。