Bonjour,
Voilà j'ai créée une classe qui hérite d'un ContentControl "AirportZone", une autre classe "Conveyor" est composé de deux de ces objets. Dans mon application principale, j'ai une liste de AirportZone et de Conveyor, je souhaite sérializer en XML ces deux listes. Pour sérializer un AiportZone je suis obligé de passer par une classe intermédiaire contenant que les données que je souhaite sérializer car il est impossible de sérializer directement un Control.
Petite question au passage, est-il possible de définir sa propre sérialisation?
J'ai essayé de créer ma propre sérialisation sur un Conveyor comme ceci:
Mais bon, quand j'essaie de sérializer:
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 [Serializable] public class Conveyor : ISerializable { public Conveyor( ) { Start = new AirportZone( ); End = new AirportZone( ); } public Conveyor( AirportZone start, AirportZone end ) { Start = start; End = end; } public AirportZone Start { get; set; } public AirportZone End { get; set; } private Conveyor( SerializationInfo info, StreamingContext ctx) { Start.Position = (Point)info.GetValue( "Start", typeof( Point ) ); End.Position = (Point)info.GetValue( "End", typeof( Point ) ); } void ISerializable.GetObjectData( SerializationInfo info, StreamingContext context ) { info.AddValue( "Start", Start.Position ); info.AddValue( "End", End.Position ); } }
J'ai cette exception:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 XmlSerializer serializer = new XmlSerializer( typeof( AirportFile ) ); serializer.Serialize( fs, file );Donc j'imagine, que c'est à cause du fait que dans Conveyor, ses attributs ne peuvent être sérialisable. Donc ce qui veut dire que ma customize sérialisation ne fonctionne pas...InnerException = {"Une erreur s'est produite lors de la réflexion du type 'Airport.Controls.Conveyor'."}
Je comprends pas trop là...Help please!
Cordialement,
Partager