我正在使用WinForms
为Job Scheduler构建C# 2.0
应用程序。
在定义public class Job
的{{1}}中写了Program.cs
。
Job object
还在//Class for defining Job object and its properties
public class Job
{
private int IntJobID;
public int JobID
{
get {return IntJobID;}
set {IntJobID = value;}
}
private string StrJobName;
public string JobName
{
get { return StrJobName; }
set { StrJobName = value; }
}
//Several other properties defined here.
}
中写了一个public static class ApplicationName
来包含应用程序范围的配置变量和所有帮助方法。
Program.cs
创建/实例化//Static Class for Global Properties and Global Methods
//*****************************************************
public static class ApplicationName
{
//Global Properties
//***************************
public static string ConfigFilePath = "D:\\ApplicationName\\conf\\ApplicationName.ini";
public static string DBFilePath = "D:\\ApplicationName\\data\\ApplicationName.xml";
//Global Methods
//************************
public static void HelperMethod1(Args)
{
}
public static string HelperMethod2(Args)
{
}
public static Job GetJobByID(int JobID)
{
XmlDocument XMLDB = new XmlDocument(); XMLDB.Load(DBFilePath);
Job ObjJob = new Job();
ObjJob.JobName = XMLDB.SelectSingleNode("/ApplicationName/Job[JobID=" + JobID.ToString() + "]/JobName").InnerText.Trim();
//Several other properties are retrieved from the DB and set to the object here.
return ObjJob;
}
}
对象并返回相同的GetJobByID
对象需要public static class ApplicationName
中的一个帮助方法Job
。我相信这是可能的,ClassA
中创建并返回ClassB
的实例/对象的方法。
注意:此方法用于以下列方式从其他表单(如Form1.cs,Form2.cs等)进行访问。据我所知,这也是允许的,也是公认的做法。
private void FormAddEditJob_Load(object sender, EventArgs e)
{
int SelectedJobID = Convert.ToInt32(this.Tag);
//Creating an instance of the Job Class
//Assigning the value of the Job object returned by GetJobByID method
Job JobToEdit = ApplicationName.GetJobByID(SelectedJobID);
TextBoxJobID.Text = SelectedJobID.ToString();
TextBoxJobName.Text = JobToEdit.JobName;
}
问题:object
方法返回的GetJobByID
未存储在对象引用JobToEdit
中。或者甚至可能GetJobByID
方法没有按预期正确地返回对象。我在这做错了什么?这不是返回对象的正确方法吗?
答案 0 :(得分:0)
确定并解决了问题。
ObjJob.PropertyName = XMLDB.SelectSingleNode()
方法中的一个语句GetJobByID
抛出异常,因为从DB中获取空值,从而导致ObjJob
对象返回为null。通过逐行调试发现这一点。