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
J'ai une classe "SProducts" qui hérite de "BaseService"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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(); } }
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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(); } }
Ce que j'ai fait pour pallier à ce problème c'est de modifier le constructeur de "SProducts" comme suit :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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(); } }
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
Partager