Question

J'étais sur le point d'hériter de la classe BitmapImage quand je l'ai remarqué a été scellé, j'ai eu un coup d'œil autour, mais je ne peux pas trouver une raison pour laquelle il est scellé.

Tout organisme sait pourquoi il en est?

Merci

Était-ce utile?

La solution

BitmapImage est le plus probable scellé, car il a un scénario d'utilisation spécifique dans sa conception, il est censé être:

  

un BitmapSource spécialisé qui est optimisé pour le chargement d'images à l'aide de XAML XAML ().

En faisant scellé la classe, il le rend plus sûr d'utiliser de XAML, puisque l'analyseur XAML saura toujours exactement ce qui va être créé.

Si vous voulez écrire votre propre, vous devez être dérivez BitmapSource au lieu, ce qui est abstrait, et destiné à être sous-classé.

Autres conseils

Avoir une classe non scellé est l'équivalent de dire « Je veux que les gens héritent de ce type ». Cela pousse les gens à hériter du type ou non est une bonne idée (voir les nombreuses questions StackOverflow où les gens héritent de List<T> à titre d'exemple).

Étant donné que les inévitables hériteront de lui, cela signifie que vous devez concevoir une classe à inheritted. Cela n'avoir des conséquences et est le coût de l'augmentation à la fois dev et temps d'essai. L'auteur de ce type n'a probablement pas envie de faire ce travail ou avait des raisons pour cela ne pas être héritables et a décidé de sceller le type

Surtout quand le développement d'une bibliothèque de classes, sauf si vous avez spécifiquement conçu pour l'héritage, vos classes exposées à l'extérieur doivent être scellés par défaut. Si un utilisateur de la classe veut hériter à un moment donné dans l'avenir, il est facile et insécable pour desceller la classe.

Si vous commencez avec la classe non scellé, on ne peut jamais revenir en arrière.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top