2011-09-14 8 views
-1

カスタムコントロールがあり、System.Web.UI.Controlから派生したctrlFooと呼びます。派生プロパティが非表示になっていますか? C#

このカスタムコントロールがインスタンス化されると、intelisenseには多くのものがあるので、私はSystem.Web.UI.Controlのすべての公開プロパティを知ることができます。 ctrlFooインサイド

私は

private new string SkinID { get; set; } 

を試みた。しかし、私はまだctrlFooの初期化インスタンスでこのプロパティを見ることができます。

他に提案がありますか?

+4

あなたのクラスが完全に有効なアクセス権を持つ関数を非表示にしたいのはなぜですか?該当しない場合は、適切なクラスから継承したかどうかを検討する価値があります。 –

+0

@Kiley Naro System.Web.UI.Controlは基本クラスです。 – maxp

+2

誰かがIntelliSenseに "迷惑な"電話をするのが聞こえるまでは時間の問題でした。 IntelliSenseが1990年にどのように働いたかを教えてください... – Jon

答えて

0

まだ公開されているSystem.Web.UI.Control.SkinIDが表示されているので、それを見ることはできます。

getsetアクセサのアクセス修飾子をprivateにすると、そのプロパティを非表示にすることができますが、基本プロパティはオーバーライドするには仮想プロパティまたは抽象プロパティでなければなりません。

2

Controlから継承するポイントがありません。 ctrlFooが実際にの場合はControlとなりますので、Controlのプロパティを隠すべきではありません。 ControlSkinIDであるため、ctrlFooSkinIDである必要があります。

Intellisenseの表示が気に入らない場合は、Intellisenseの設定を変更してください(前にIntelliSenseについて不満を聞いたことはありません)。

0

継承されたプロパティを非表示にすることはできません。これはリスコフ置換原則に違反する。

関連する問題