Bonjour,
C'est la première fois que j'envoie a un WS un objet et je dois lui envoyer un objet de mon cru appelé "RecordSet" dont vous trouverer la déclaration ci dessous. Cette classe est contenue dans une librairie appelée MDA, et est partagée par le client et le webservice.
La génération de la classe ainsi que celle du ws se déroule sans erreur. Lors de l'exécution du WS j'ai une erreur ainsi que la trace du serveur de dev, que je n'arrive pas a m'expliquer
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101 [Serializable] public class RecordSet : IEnumerable { #region Propriétés public Device LocalDevice { get; set; } public DateTime RecordingDay { get; set; } public List<Record> RecordList { get; set; } #endregion #region Indexeurs public Record this[int i] { get { return RecordList[i]; } set { RecordList[i] = value; } } #endregion #region Constructeurs public RecordSet() { RecordingDay = DateTime.Now; LocalDevice = new Device(); RecordList = new List<Record>(); } public RecordSet(DateTime dt, Record[] list) { RecordingDay = dt; LocalDevice = new Device(); RecordList = new List<Record>(list); } #endregion #region IEnumerable Membres IEnumerator IEnumerable.GetEnumerator() { return new RecordSetEnum(RecordList); } #endregion } public class RecordSetEnum : IEnumerator, IDisposable { private List<Record> _list; private int _position; #region Constructeurs public RecordSetEnum(List<Record> list) { _list = list; Reset(); } #endregion #region IEnumerator Membres public Record Current { get { return _list[_position]; } } public bool MoveNext() { return (++_position < _list.Count); } public void Reset() { _position = -1; } object IEnumerator.Current { get { return _list[_position]; } } #endregion #region IDisposable Membres public void Dispose() { return; } #endregion }
Dès que je supprime la déclaration IEnumerable ainsi que la définition des méthodes membre dans la classes RecordSet, l'application se compile et s'exécute sans problème.Pour être sérialisables XML, les types qui héritent de IEnumerable doivent avoir une implémentation de Add(System.Object) à tous les niveaux de leur hiérarchie d'héritage. MDA.RecordSet n'implémente pas Add(System.Object).
Merci a vous![]()
Partager