Domanda

Stavo per ereditare dalla classe BitmapImage quando ho notato che è stato sigillato, ho avuto una rapida occhiata in giro, ma non riesco a trovare una ragione perché è sigillato.

Ogni corpo sa perché questo è?

Grazie

È stato utile?

Soluzione

BitmapImage è più probabile sigillato perché ha uno scenario di utilizzo specifico è design, è destinata ad essere:

  

una BitmapSource specializzata che è ottimizzato per il caricamento delle immagini usando Extensible Application Markup Language (XAML).

Rendendo la classe sigillata, rende più sicuro l'uso da XAML, dal momento che il parser XAML sarà sempre sapere esattamente cosa sta per essere creato.

Se si vuole scrivere il proprio, si dovrebbe essere derivante da BitmapSource invece, che è astratta, e destinato ad essere sottoclasse.

Altri suggerimenti

Avere una classe non sigillata è l'equivalente di dire "Voglio che la gente di ereditare da questo tipo". Questo fa sì che la gente a ereditate dal tipo se sia o non sia una buona idea (vedi le numerose domande StackOverflow dove le persone ereditano da List<T> come esempio).

Dal momento che le persone inevitabili erediteranno da esso, questo significa che è necessario progettare una classe da inheritted. Questo ha conseguenze e lo fa aumento dei costi sia in dev e test del tempo. L'autore di questo tipo probabilmente non ha voluto fare questo lavoro o aveva ragioni per non essere ereditabili e ha deciso di sigillare il tipo

Specialmente quando lo sviluppo di una libreria di classi, a meno che non hai specificamente progettato per l'eredità, le vostre classi esterna dell'apparecchio devono essere sigillati per impostazione predefinita. Se un utente della classe vuole ereditare ad un certo punto nel futuro, allora è facile e non-rottura per rompere il sigillo della classe.

Se si inizia con la classe non sigillata, non si può tornare indietro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top