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.


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
    }
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

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).
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.

Merci a vous