2009-04-20 7 views
0

J'ai une classe que j'utilise ci-dessous. Et j'utilise cette classe pour mon application Windows. Cependant, lorsque j'appelle la méthode de mon application ReadInConfig(), elle lit et remplit la datatable, et affecte l'adresse _sip_ip.Objets de classe C#

Dans mon application Windows, j'ai ce qui suit. Cependant, cela ne me donne pas le sip_ip qui lui a été assigné.

ConfigSIP readIn = new ConfigSIP(); 
readIn.ReadInConfig(); 
string sip_ip = readIn.sip_ip(); // Get nothing here. 

Je pense que le _sip_ip qui a été attribué par la table de données est un autre objet que de faire ce readIn.sip_ip();

Y at-il un moyen de résoudre ce problème?

Un grand merci,

public class ConfigSIP 
{ 
    private string _sip_ip; 

     // Fill the data table and assign the sip ip. 
    public void ReadInConfig() 
    { 
     DataTable dt = new DataTable("Admin"); 
     dt.ReadXmlSchema(@"C:\Config.xml"); 
     dt.ReadXml(@"C:\Config.xml"); 

     _sip_ip = dt.Rows[0]["Sip_ip"].ToString(); 
    } 

     // Return the sip ip address. 
    public string sip_ip() 
    { 
     return _sip_ip; 
    } 
} 
+0

Qu'est-ce que c'est «rien»? Une chaîne vide? Si c'est le cas, cette valeur est parfaitement valide pour le champ _sip_ip. Si ce n'est pas une valeur valide, mettez une assertion juste après l'avoir assignée, ce qui l'indique. –

+0

** NOTE ** l'OP a modifié la ligne manquante dans la question au fur et à mesure de la réponse. – ChrisF

Répondre

6

Vous avez oublié d'appeler ReadInConfig:

+0

Bonjour, désolé. J'appelais ReadInConfig(). quand j'ai copié et collé, je dois l'avoir oublié. J'ai maintenant édité mon code. – ant2009

+2

Dans ce cas, je suppose que dt.Rows [0] ["Sip_ip"]. ToString() est vide. Essayez de définir un point d'arrêt sur cette ligne et voyez ce que contient votre datatable. –

3

Si votre code est copié verbatim votre code client ne demande pas la méthode ReadInConfig(). Donc la chaîne ne sera jamais peuplée.

Questions connexes