Bonjour à tous !
J'ai un problème avec une classe dérivée.
J'ai une classe CThread qui dérive de la classe network_settings
La classe network_settings définit des variables qui sont tirées d'un fichier xml
La classe CThread utilise ces variables pour configurer une lien tcpclient.
Mon problème, c'est que les variables de network_settings, utilisée dans CThread me renvoie toujours la même erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 La référence d'objet n'est pas définie à une instance d'un objet
Voici la classe network_settings:
Et ici, voici une partie de la classe CThread qui pose problème:
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 public interface Inetwork_settings { int NS_networkTcpSend { get;} int NS_networkTcpReceive { get;} string NS_networkMd5Flag { get;} string NS_networkFilenameFlag { get;} string NS_networkRootDirectory { get;} } public class network_settings : Inetwork_settings { private XmlDocument _xmlNetSettings = new XmlDocument(); private StreamReader str; private int _networkTcpSend; private int _networkTcpReceive; private string _networkMd5Flag; private string _networkFilenameFlag; private string _networkRootDirectory; public network_settings() { try { this.str = File.OpenText(new Path().NetworkSettings); this._xmlNetSettings.Load(this.str); //Chargement des données du fichier xml dans les variables privées. this.NS_networkTcpSend = Convert.ToInt32(_xmlNetSettings.SelectSingleNode("/NETWORK_SETTINGS/TCP/TCPSEND").InnerText.Trim()); this.NS_networkTcpReceive = Convert.ToInt32(_xmlNetSettings.SelectSingleNode("/NETWORK_SETTINGS/TCP/TCPRECEIVE").InnerText.Trim()); this.NS_networkMd5Flag = _xmlNetSettings.SelectSingleNode("/NETWORK_SETTINGS/TCP/MD5FLAG").InnerText.Trim(); this.NS_networkFilenameFlag = _xmlNetSettings.SelectSingleNode("/NETWORK_SETTINGS/TCP/FILEFLAG").InnerText.Trim(); this.NS_networkFilenameFlag = _xmlNetSettings.SelectSingleNode("/NETWORK_SETTINGS/ROOTDIRECTORY").InnerText.Trim(); } catch (Exception e) { new Error((Iuser)new user()).WriteError("Loading network settings", e); } } public int NS_networkTcpSend { get { return _networkTcpSend; } private set { _networkTcpSend = value; } } public int NS_networkTcpReceive { get { return _networkTcpReceive; } private set { _networkTcpReceive = value; } } public string NS_networkMd5Flag { get { return _networkMd5Flag; } private set { _networkMd5Flag = value; } } public string NS_networkFilenameFlag { get { return _networkFilenameFlag; } private set { _networkFilenameFlag = value; } } public string NS_networkRootDirectory { get { return _networkRootDirectory; } private set { _networkRootDirectory = value; } } }
J'ai donc plusieurs interrogations:
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 public class CThread : network_settings { private TcpClient _myClient; private StreamReader _nStr; private StreamWriter _nStw; private FileStream _fs; private StreamWriter _stw; private char[] _bytesReceived; private char[] _bytesSent; private string _rmf; private Iserveur _iserveur; private network_settings _nts; public CThread(Iserveur iserveur) { //Debug, on génère une erreur vide pour afficher NS_networkRootDirectory (variable de la classe network_settings) new Error(iserveur.S_iuser).WriteError("Debug: " + NS_networkRootDirectory, new Exception()); ... ...
1) la classe CThread dérive de network_settings mais la constructeur de network_settings n'est jamais appelé. C'est pas bon ça ?
2) J'ai tenté de ne pas dérivé la classe CThread, et j'ai appelé dan sla constructeur de CThread une nouvelle instance de la classe network_settings.
J'obtiens toujours la même erreur![]()
![]()
![]()
3) Quelle est la bonne méthode pour utiliser "des sortes de variables d'environnement" dans différentes classes ....
Merci pour vos réponses !!!
Partager