基底メンバの隠蔽? への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 るきお  () 投稿日時 2008/5/17 03:46:00
中級講座第3回 
http://homepage1.nifty.com/rucio/main/VBdotNet/Advance/Advance3.htm 
の「4.機能の削除」のところで同じようなテーマを扱っています。 
トリッキーな手段としてShadows Eventを使ってメンバを隠蔽する方法も紹介しています。コンパイル時にエラーにもできますよ。ただトリッキーですので採用の際はよくご検討ください。
投稿者 よねKEN  () 投稿日時 2008/5/17 02:49:00
>>2 
 
適切な方法かどうかは別として、Obsolete属性はどうでしょうか? 
http://homepage1.nifty.com/rucio/main/dotnet/technique/teq3_Attribute.htm 
#すみません。試しては居ません。
投稿者 やってみますぅ  () 投稿日時 2008/5/17 01:30:00
よねKEN さんありがとうございます。 
 
> ありません。  
> 継承は原則として機能を追加するもので、機能の縮小を行うものではないためです。 
 
追加する機能の設計が甘いせいでプロパティに想定外の値がセットされるとマズイ箇所が何箇所かあるもので... 
 
もうひとつ質問なのですが、基底クラスのプロパティをShadowsしておき<System.ComponentModel.Browsable(False)>の属性(?)を付加するとプロパティウインドウに表示されなくなりますが、コードエディタ(?)のメンバのヒント(??)には表示されてしまいます。 
これは<System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)>を付加すれば表示されなくるのですが、この方法で問題ないのでしょうか? 
これらは単にウインドウやヒントが表示されなくなるだけで、手入力すればコンパイルできてしまいます。コンパイル時にエラーにさせる方法はないものでしょうか?
投稿者 よねKEN  () 投稿日時 2008/5/16 20:47:00
> 全てのメンバを一気に隠す方法はないものなのでしょうか? 
 
ありません。 
継承は原則として機能を追加するもので、機能の縮小を行うものではないためです。 
 
ただ、この前提の元では、子のクラスで新しく追加したい機能(メソッドなど)でたまたま親にも同じ名前の機能が既に定義されている場合、機能追加できなくなるため、その回避手段としてShadowsがあります。
投稿者 やってみますぅ  () 投稿日時 2008/5/16 20:13:00
はじめまして。 
TextBoxクラスを継承して機能を限定したクラスを作成したいのですが、基底クラスのメンバ(プロパティやメソッド)はひとつずつShadowsで定義して隠さなければならないのでしょうか? 
全てのメンバを一気に隠す方法はないものなのでしょうか?