public interface IProcess
{
void Step_One();
void Step_Two();
Timer ProcessTimer{get; set;}
}
基類..
public class ProcessBase
{
protected Timer processTimer;
public Timer ProcessTimer{get{ return processTimer;}set{processTimer=value;}}
//sets up all the common objects
public ProcessBase()
{
}
//This constructor will call the default constructor^
protected ProcessBase(long intervalArg) : this()
{
processTimer = new Timer(intervalArg);
processTimer.Enabled = true;
}
}
具體類
public class ReportedContentProcess : ProcessBase, IProcess
{
public ReportedContentProcess(): base(5000)
{
}
public void Step_One()
{
}
public void Step_Two()
{
}
}
,但是當我試圖把它弄出來在一家工廠...
public static class ProcessFactory
{
public static List<IProcess> GetProcessors()
{
ReportedContentProcess.ReportedContentProcess reportedContentProcess = new ReportedContentProcess.ReportedContentProcess();
List<IProcess> retProcesses = new List<IProcess>();
retProcesses.Add(reportedContentProcess);
return retProcesses;
}
}
,然後附加一個處理程序定時器...
processorsForService = ProcessFactory.GetProcessors();
foreach(IProcess p in processorsForService)
{
p.ProcessTimer.Elapsed += new ElapsedEventHandler(IProcess_Timer_Elapsed);
}
我得到一個運行時錯誤說,p.ProcessTimer爲空。爲什麼是這樣?我已經在基類中繼承和實例化,不能理解它爲什麼爲null。香港專業教育學院甚至包括它的接口...
爲什麼你有2個構造函數?爲什麼沒有初始化Timer和所有其他對象? – 2011-10-03 11:38:10
片段沒有解釋。使用調試器。在兩個構造函數上設置一個斷點。 –
我複製了代碼,它運行良好,您使用的是.net版本/ ide。 – wiero