Un gran numero di classi del framework .Net sono contrassegnati come 'sigillati', che impedisce di ereditare queste classi con il vostro. Sicuramente questo va contro la natura dell'orientamento agli oggetti, in cui è possibile estendere e ridefinire il comportamento degli oggetti esistenti.Perché la parola chiave 'sealed' esiste in .Net?
Esiste una buona ragione per l'esistenza della parola chiave "sealed"?
Come esempio, NotifyCollectionChangedEventArgs in Silverlight è sigillata. Volevo creare la mia versione di ObservableCollection che ha sostenuto AddRange e removeRange, ma la versione di Silverlight di NCCEA non lo fa forniscono un costruttore che supporta più elementi per le NewItems e OldItems proprietà, che sono già definiti come ILists. Solitamente, mi piacerebbe solo estendere la classe con la mia variante che ha annullato le proprietà NewItems e , ma in questo caso non è possibile e non vedo perché debba essere il caso.
Si potrebbe voler leggere il post sul blog di Eric Lippert sul perché la maggior parte delle cose nel framework .NET sono sigillate: http://blogs.msdn.com/ericlippert/archive/2004/01/22/61803.aspx – gix
perché java ha il modificatore di classe 'final'/s –