나는 인터페이스가 있습니다상속 한 이유는 무엇입니까?
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 개인가요? 타이머와 다른 모든 객체를 초기화하는 것이 어떨까요? –
스 니펫에 대한 설명이 없습니다. 디버거를 사용하십시오. 두 생성자 모두에 중단 점을 설정하십시오. –
내가 코드를 복사하고 잘 작동합니다 .net 버전/ide 당신이 사용하고 있습니까? – wiero