interface IMyInterace
{
void Open();
object Read();
void Close();
}
class MyImplementation : IMyInterface
{
public void Open() { /* instantiates disposible class */ }
//...
public void Close() { /* calls .Dispose(); */ }
}
클래스 내부의 삭제 가능한 인스턴스가 호출되도록 이러한 유형의 상황을 처리하는 좋은 방법이 있습니까? IMyInterface 구현은 반드시 IDisposible 인스턴스를 캡슐화하지 않고 닫히고 응용 프로그램의 수명이 다할 때까지 반복적으로 다시 열립니다. (호출자가 문서에서 제외하고 '닫기'를 호출해야한다는 신호는 없습니다.)일회용 인스턴스를 캡슐화하는 것보다 클래스를 다루는 방법은 무엇입니까?
나는 이렇게 생각 해요 :
- 는 MyImplementation에 IDisposible를 구현합니다.
- Dispose()를 설정하여 Close()를 호출합니다.
- 호출이 닫혔는지 확인하기 위해 열기 시작 열기에 대한 호출을 Close() 또는 Dispose()에 추가하십시오.
IMyInterface의 사용자는 사용중인 구현을 알지 못하므로 MyImplementation을 일회용으로 만드는 것이 얼마나 중요한지 잘 모르겠지만 모든 구현이 IDisposibles를 캡슐화하지는 않습니다.
당신은 전체 일회용 패턴을 필요가 없습니다.소멸자가 필요하지 않으므로 SuppressFinalize가 필요하지 않습니다. –