Ciao, qui trovi un articolo sull'ereditarietà
http://msdn.microsoft.com/it-it/library/ms173149.aspxNon conosco la situazione in cui ti trovi quindi potrei sbagliarmi ma... non sarebbe possibile fare a meno di creare la classe "CommonData"?
Potresti definire le proprietà "aa", "bb" e "id" subito all'interno di "BaseService" e te le troveresti già disponibili nella classe "OneClass" che da essa eredita. Esempio, qui definisco la classe base:
//uso abstract solo se non voglio che BaseService si possa istanziare
public abstract class BaseService{
public int id {get; set;}
public string aa { get; set; }
public string bb { get; set; }
}
Nota come non abbia usato il modificatore
abstract per i membri di BaseService. Infatti non vale la pena di usarlo a meno che tu non voglia che le sottoclassi debbano obbligatoriamente fornire una loro implementazione per quelle semplici proprietà. Potresti usare il modificatore
virtual, casomai, per fare in modo che le sottoclassi, opzionalmente e a loro piacimento, possano farne l'override.
Quindi puoi definire una sottoclasse e farla ereditare da BaseService
public class OneClass : BaseService
{
public string cc { get; set; }
}
Il codice è semplice, ho dovuto solo aggiungere una nuova proprietà "cc", dato che OneClass già eredita i membri "aa", "bb" e "id" da BaseClass.
Allo stesso modo posso creare altre classi come "TwoClass" o "ThreeClass". Grazie al polimorfismo, tutte quante potranno essere ricondotte a BaseService.
var one = new OneClass();
var base = one as BaseService; //polimorfismo
Ciò, ad esempio, mi consente di aggiungere delle istanze di OneClass, TwoClass e ThreeClass ad un'unica lista perché tutte condividono il tipo base BaseService.
var lista = new List<BaseService>(){
new OneClass(),
new TwoClass(),
new ThreeClass()
};
Ho risposto alla tua richiesta?