선택적 구현 방법으로 인터페이스를 정의 할 수 있습니까? 예를 들어 내 핵심 라이브러리 IDataReader에 따라 다음 인터페이스 정의를 가지고 :인터페이스에서 선택적 구현 방법을 정의 하시겠습니까?
public interface IDataReader<T> {
void StartRead(T data);
void Stop();
}
하지만, 내 현재의 구현에, 정지() 메소드를 사용하거나 구현 된 적이있다. 내 모든 구현 클래스,이 방법은 기본적으로 던져 NotImplementedExcetion()로 구현 될 필요가 있습니다 :
물론class MyDataReader : IDataReader<MyData> {
...
public void Stop()
{
// this none implementaion looks like uncompleted codes
throw NotImplementedException();
}
, 내가 던져 예외 코드를 제거 할 수 있습니다 빈 둡니다.
이 데이터 판독기 인터페이스를 설계 할 때 독서 프로세스를 중지하는 방법을 제공해야한다고 생각했습니다. 어쩌면 우리는 앞으로 언젠가 Stop()을 사용할 것입니다.
어쨌든 선택적 구현 방법으로이 Stop() 메소드를 만들 수 있는지 확실하지 않습니까? 내가 생각할 수있는 유일한 방법은 중지와 IDataReader 및 IDataReader2 같은 다른 인터페이스를 정의하는 것입니다. 또 다른 옵션은 다음과 같이 인터페이스에이 일을 휴식하는 것입니다
reader.StartRead(myData);
....
// some where when I need to stop reader
IStop stoppable = reader as IStop;
if (stoppable != null) stoppable.Stop();
...
: 내 구현의 경우
interface IDataReader<T> {
void StartRead(T data);
}
interface IStop {
void Stop();
}
, 나는 캐스트 또는 내 구현() 메소드 중지를 지원하는지 확인하려면 IStop로 사용해야합니다
아직도 그 코드를 써야합니다. 어떤 제안? .Net 또는 C#의 인터페이스에서 선택적 구현 메소드를 정의 할 수있는 방법이 있는지 확실하지 않은가요?
나는 귀하의 요지를 보았습니다. 나는 실제로 그 방법을 제거했다. 이것은 내 통제하에있다. 그러나, 나는 그것을 한 후에, .Net에서 메서드 옵션을 만들 수있는 방법이 있는지 알아 내려고 노력했다. 인터페이스를 통해 프로세스를 중단해야하는 경우에 대비하여 선택적으로 유지하고 싶습니다. –
답변 : 옵션 방법을 업데이트 할 예정입니다. –