Bonsoir a tous,
je veux utiliser une classe qui ne peut s'instancier qu'une fois et qui soit thread-safe.
De plus je veux pouvoir la serialiser dans un fichier et la deserialiser.
La serialiser ne me pose pas de probleme par contre pour la deserialiser ca me pose probleme.
voici la definition de ma classe:
il me dit que :
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 [Serializable()] public class BlackList : ISerializable { //Variables public List<BlackListNumber> ListBlackListNumber { get; set; } static readonly BlackList instance = new BlackList(); public static BlackList Instance { get { return instance; } } //Constructeurs private BlackList() { ListBlackListNumber = new List<BlackListNumber>(); } //Methodes public static void writeObject(string path,BlackList ObjectToSerialize) { Stream stream = File.Open(path, FileMode.Create); BinaryFormatter bformatter = new BinaryFormatter(); bformatter.Serialize(stream, ObjectToSerialize); stream.Close(); } public void writeObject(string path) { Stream stream = File.Open(path, FileMode.Create); BinaryFormatter bformatter = new BinaryFormatter(); bformatter.Serialize(stream, this); stream.Close(); } public static BlackList ReadObject(string path) { Stream stream = File.Open(path, FileMode.Open); BinaryFormatter bformatter = new BinaryFormatter(); BlackList retour; retour = (BlackList)bformatter.Deserialize(stream); stream.Close(); return retour; } public override string ToString() { string retour = ""; var e = this.ListBlackListNumber.GetEnumerator(); while (e.MoveNext()) { retour += e.Current.ToString() + "\n"; } return retour; } //Imlementation interfaces #region ISerializable Membres public void GetObjectData(SerializationInfo info, StreamingContext context) { info.AddValue("ListBlackListNumber", this.ListBlackListNumber); info.AddValue("instance", instance); } #endregion public BlackList(SerializationInfo info, StreamingContext context) { this.ListBlackListNumber = (List<BlackListNumber>)info.GetValue("ListBlackListNumber", typeof(List<BlackListNumber>)); instance = (BlackList)info.GetValue("instance", typeof(BlackList)); } }Erreur1 Un champ readonly statique ne peut pas être assigné (sauf s'il appartient à un constructeur statique ou un initialiseur de variable) C:\Users\Thomas\Documents\Visual Studio 2008\Projects\BlackListingFunctions\BlackList.cs
Partager