[C#] Problème classe dérivée
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:
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:
Code:
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; }
}
} |
Et ici, voici une partie de la classe CThread qui pose problème:
Code:
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());
...
... |
J'ai donc plusieurs interrogations:
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 :oops: :cry: :cry:
3) Quelle est la bonne méthode pour utiliser "des sortes de variables d'environnement" dans différentes classes ....
Merci pour vos réponses !!!