Bonjour , comment redéfinir une méthode d'une interface dans une classe qui l'implémente en la mettant static ?
Merci ! :)
Version imprimable
Bonjour , comment redéfinir une méthode d'une interface dans une classe qui l'implémente en la mettant static ?
Merci ! :)
Une interface ne peut pas contenir de méthodes ou membre static. Par contre elle peut contenir une méthode virtuelle...
Merci ! :)
Si la méthode est statique, elle n'implémente pas l'interface... Une interface ne peut définir que des membres d'instance. Ce qui est logique, vu qu'on ne peut pas redéfinir une méthode statique dans une classe dérivée...
Oui, mais tu ne peux pas marquer une méthode comme virtuelle dans l'interface... c'est la classe qui implémentera l'interface qui définira si la méthode est virtuelle ou non.
J'avais confondu avec les classes abstraites :oops:
Salut,
Comment faire en sorte que des classes devant contenir des methodes statiques présentent toutes les mêmes.
Par exemple dans une couche métier que toutes les classes implémentent au moins Insert, GetById, Update, Delete avec des objets types en entrée ou retour.
Si j'ai cette classe:J'obtiens l'interface suivanteCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 public class Stock : IBasicBll { #region IBasicBll Members public int Create(StockEntity obj) { throw new Exception("The method or operation is not implemented."); } public object GetById(int id) { throw new Exception("The method or operation is not implemented."); } public bool Update(StockEntity obj) { throw new Exception("The method or operation is not implemented."); } public bool Delete(int id) { throw new Exception("The method or operation is not implemented."); } #endregion }
Mais les objets sont typés.Code:
1
2
3
4
5
6
7 public interface IStock { int Create(StockEntity obj); bool Delete(int id); object GetById(int id); bool Update(StockEntity obj); }
Si je remplace mes objets typés par "object"
Je suis obligé de les convertirCode:
1
2
3
4
5
6
7
8
9
10 public interface IBasicBll { int Create(object obj); object GetById(int id); bool Update(object obj); bool Delete(int id); }
Auriez-vous une solution?Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 public class Stock : IBasicBll { #region IBasicBll Members public int Create(object obj) { StockEntity stock = (StockEntity)obj; return 0; } public object GetById(int id) { StockEntity stock = new StockEntity(); return stock; } public bool Update(object obj) { StockEntity stock = (StockEntity)obj; return true; } public bool Delete(int id) { return true; } #endregion }
Merci.
A+
Tu changes IBasicBll en IBasicBll<T> et tu fais hériter Stock de IBasicBll<StockEntity>.
Cool,
Ca marche. Merci.
A+Code:
1
2
3
4
5
6
7
8
9
10 public interface IBasicBll<T> { int Create(T obj); bool Delete(int id); bool Update(T obj); T GetById(int id); }