Stavo facendo una revisione del codice oggi e ho trovato un vecchio codice scritto da qualche sviluppatore. E 'più o meno cosìmetodi astratti interni. Perché qualcuno dovrebbe averli?
public abstract class BaseControl
{
internal abstract void DoSomething();
}
Se si dispone di una classe derivata all'interno della stessa assemblea, che avrebbe funzionato
public class DerivedControl : BaseControl
{
internal override void DoSomething()
{
}
}
Ma derivare la classe di base in un assembly diverso darebbe errore di compilazione tempo
DerivedControl does not implement inherited abstract member 'BaseControl.DoSomething()
Questo mi ha fatto pensare. Perché qualcuno dovrebbe dichiarare un metodo come astratto interno?
Potrebbe non essere una cattiva idea fino alla quarta volta che ti sei imbattuto in questa supposizione condiscendente in una libreria di terze parti. Spesso significa una tonnellata di duplicazioni inutili. (DevExpress, ti sto guardando ...) – jnm2