如何:从(静态)方法返回一个对象?

时间:2014-09-16 09:14:24

标签: c# winforms oop

我正在使用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方法没有按预期正确地返回对象。我在这做错了什么?这不是返回对象的正确方法吗?

1 个答案:

答案 0 :(得分:0)

确定并解决了问题。

ObjJob.PropertyName = XMLDB.SelectSingleNode()方法中的一个语句GetJobByID抛出异常,因为从DB中获取空值,从而导致ObjJob对象返回为null。通过逐行调试发现这一点。