当我注意到它被密封时,我正要从 BitmapImage 类继承,我快速浏览了一下,但找不到它被密封的原因。
有谁知道这是为什么?
谢谢
BitmapImage很可能是密封的,因为它在设计中具有特定的使用场景,它意味着:
一个专门的 BitmapSource,已针对使用可扩展应用程序标记语言 (XAML) 加载图像进行了优化。
通过使类密封,它可以更安全地从 XAML 中使用,因为 XAML 解析器将始终准确地知道将要创建什么。
如果你想自己写,你应该从BitmapSource派生,它是抽象的,并且打算被子类化。
解封一个类相当于说“我希望人们继承这种类型”。这会导致人们从类型继承,无论这是否是一个好主意(请参阅人们继承的众多 StackOverflow 问题List<T>
作为示例)。
由于不可避免的人会继承它,这意味着您必须设计一个要继承的类。这确实会产生后果,并且会增加开发和测试时间的成本。该类型的作者可能不想做这项工作或有原因使其不可继承并决定密封该类型
特别是在开发类库时,除非您专门为继承而设计,否则您的外部公开类默认情况下应该是密封的。如果该类的用户希望在将来的某个时间继承,那么解封该类就很容易且不会破坏。
如果您从未密封的课程开始,您将永远无法回头。