2012-02-17 13 views
7

È possibile impostare regole per la classe che eredita la mia classe base. per esempio. Person : BaseClass, voglio Person per implementare iSomeKindOfInterface, se Person non implementa l'interfaccia, non è consentito ereditare da BaseClass.Regole per Eredita classe

So che questo è posibble di classi base generici dove si può fare il seguente

public BaseClass<T> 
    where T : iSomeKinfOfInterface 

risposta

10

È possibile implementare l'interfaccia nella classe base e costringere la classe eredita di fornire l'attuazione:

public interface ISomeInterface 
{ 
    void DoSomething(); 
} 

public abstract class BaseClass : ISomeInterface 
{ 
    public abstract void DoSomething(); 
} 

public class Person : BaseClass 
{ 
    public override void DoSomething() 
    { 
     ... 
    } 
} 
2

dichiarare la vostra classe come

abstract BaseClass : ISomeKinfOfInterface 
+0

Impossibile utilizzare classe astratta. Le classi di cui sto parlando sono i controlli utente di winforms. Quando uso una classe base astratta, non riesco a limitare il controllo dell'utente nel designer Visual Studio ... – Captain0

+0

L'errore che ottengo nella finestra di progettazione quando si utilizza la classe base generica è lo stesso di questo http://stackoverflow.com/questions/3933218/form-designer-breaks-on-generic-abstract-usercontrol quando si utilizzano classi astratte l'errore è simile – Captain0

Problemi correlati