封印されていることに気付いたとき、BitmapImageクラスから継承しようとしていました。ざっと見てみましたが、封印されている理由がわかりません。
誰もがこれがなぜであるか知っていますか?
ありがとう
封印されていることに気付いたとき、BitmapImageクラスから継承しようとしていました。ざっと見てみましたが、封印されている理由がわかりません。
誰もがこれがなぜであるか知っていますか?
ありがとう
BitmapImageは、その設計に特定の使用シナリオがあるため、おそらく封印されています。
Extensible Application Markup Language(XAML)を使用して画像をロードするために最適化された特殊なBitmapSource。
クラスを封印することにより、XAMLパーサーは作成される内容を常に正確に認識できるため、XAMLからの使用がより安全になります。
独自に作成する場合は、代わりにBitmapSourceから派生する必要があります。これは抽象的であり、サブクラス化することを目的としています。
クラスを開封することは、「このタイプから継承してほしい」と言うのと同じです。これにより、それが良い考えであるかどうかにかかわらず、人々はそのタイプから継承します(List<T>例として人々が継承する多数のStackOverflowの質問を参照してください)。
必然的に継承されるので、継承するクラスを設計する必要があります。これは結果をもたらし、開発時間とテスト時間の両方でコストを増加させます。このタイプの作者は、おそらくこの作業をしたくないか、継承できない理由があり、タイプを封印することにしました。
特にクラスライブラリを開発する場合、継承用に特別に設計されていない限り、外部に公開されたクラスはデフォルトで封印されている必要があります。クラスのユーザーが将来のある時点で継承したい場合は、クラスのシールを解除するのは簡単で中断はありません。
開封したクラスから始めると、二度と戻ることはできません。