У меня есть интерфейс:
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. Почему это? Я унаследовал и создал в базовом классе не могу понять, почему его ноль. Я даже включил его в интерфейс ...