Base : Classe abstraite et constructeur
Bonjour à tous,
Ceci est une question concernant les bases en C# (je viens du monde VB et je viens de me mettre au C# histoire d'etre ok sur les deux langages).
J'ai une classe abstraite "BaseService" comme suit
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| abstract class BaseService
{
protected IBaseService _service;
public BaseService(IBaseService ioc)
{
_service = ioc;
}
public IList<Object> GetAll(IBaseService ioc)
{
return _service.GetAll();
}
} |
J'ai une classe "SProducts" qui hérite de "BaseService"
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
class SProducts : BaseService
{
new protected IProducts _service;
public SProducts(IProducts ioc)
{
_service = ioc;
}
public IList<Products> GetValidProducts()
{
return _service.GetValidProducts();
}
} |
Lorsque mes méthodes de base figurant dans la classe mere BaseA font appel à _service, je reçois une exception comme quoi _service est à null.
Ce que j'ai fait pour pallier à ce problème c'est de modifier le constructeur de "SProducts" comme suit :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| class SProducts : BaseService
{
new protected IProducts _service;
public SProducts(IProducts ioc)
{
_service = ioc;
base._service = ioc;
}
public IList<Products> GetValidProducts()
{
return _service.GetValidProducts();
}
} |
Je suis donc obligé de faire deux assignations au constructeur : une pour la classe fille et une pour la classe de base dont elle hérite.
Est-ce normal ou bien ai-je raté un épisode quelque part ?
Logiquement, le fait d'assigner une valeur à l'attribut de la classe fille devrait automatiquement "assigner" la même chose à la classe mère vu qu'on travaille sur le même attribut non ?
Merci d'avance pour vos réponses