.Net フレームワークの多数のクラスは「封印済み」としてマークされているため、これらのクラスを独自のクラスに継承することはできません。確かにこれは、既存のオブジェクトの動作を拡張および再定義できるオブジェクト指向の性質に反します。
「封印された」キーワードが存在する正当な理由はありますか?
例として、Silverlight の NotifyCollectionChangedEventArgs は封印されています。AddRange と RemoveRange をサポートする ObservableCollection の独自のバージョンを作成したかったのですが、NCCEA の Silverlight バージョンには、既に IList として定義されている NewItems プロパティと OldItems プロパティの複数の項目をサポートするコンストラクターが用意されていません。通常、NewItems プロパティと OldItems プロパティをオーバーライドする独自のバリアントを使用してクラスを拡張するだけですが、この場合はそれができず、そうすべき理由もわかりません。