Bonjour à tous,
J'ai un léger soucis qui mélange héritage et Collection.
J'ai une classe PeriodeBlock, qui est une classe abstraite dont hérite PeriodeBlockAccord & PeriodeBlockFirst, j'ai besoin d'une ObservableCollection que j'ai nommée Periods.
Cette ObservableCollection, j'ai besoin qu'elle soit faite de PeriodColumnAccord pour PeriodeBlockAccord, de PeriodColumnFirst pour PeriodeBlockFirst, etc.
Parce que j'aime bien éviter de multiplier le code, j'ai une classe abstraite PeriodeColumn dont héritent PeriodColumnAccord et PeriodColumnFirst.
Pour que ça fonctionne, je me suis dit : déclarons une propriété abstract ObservableCollection<PeriodColumn> Periods.
Et surchargeons la en dessous mais avec le type spécifique. Sauf que ça ne veut pas fonctionner parce que les types sont différents >.<
Est-ce qu'il y a un moyen de passer outre ?
Here is the code :
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 public abstract class PeriodBlock { public abstract ObservableCollection<PeriodeColumn> Periods { get; set; } // Et tout un tas de trucs qui utilisent Periods } public class PeriodBlockAccord : PeriodBlock { private ObservableCollection<PeriodColumnAccord> _Periods; public override ObservableCollection<PeriodColumnAccord> Periods // <<<<< La tentative de surcharge { get { return _Periods; } set { if (this._Periods != value) { this._Periods = value; this.RaisePropertyChanged("Periods"); } } } // Et tout un tas de truc qui n'utilisent pas forcément Periods } public abstract class PeriodeColumn { // Du code commun à toutes mes colonnes } public class PeriodColumnAccord : PeriodeSpotASpotColumn { private double _Accord; public double Accord { get { return _Accord; } set { if (this._Accord != value) { this._Accord = value; this.RaisePropertyChanged("Accord"); } } } // Et du code unique en plus } public class PeriodColumnFirst : PeriodeSpotASpotColumn { private double _First; public double First { get { return _First; } set { if (this._First != value) { this._First = value; this.RaisePropertyChanged("First"); } } } // Et du code unique en plus }
Partager