다음 구조가 있습니다. 내가 헷갈리는 것은 PhoneBase
을 처분하는 방법이다. Unity가 PhoneBase
을 처분하는지는 모르겠다.Unity에서 기본 클래스를 처리하는 가장 좋은 방법은 무엇입니까
public class PhoneBase : IDisposable
{
protected int GetSignal()
{
}
//something needs to dispose
public void Dispose()
{
}
}
public interface IMyPhone
{
void SwitchOn();
void SwitchOff();
}
public class MyPhone : PhoneBase, IMyPhone
{
public void SwitchOn()
{
//implement
}
public void SwitchOff()
{
//implement
}
}
public class PhoneQuestionController : Controller
{
IMyPhone myPhone;
public PhoneQuestionController(IMyPhone myPhone)
{
this.myPhone = myPhone;
}
}
나는 다음과 같은 컨트롤러의 Dispose
을 무시하면서 다음을 호출 IMyPhone
인터페이스에서 Dispose
방법을 넣어해야 하는가? 아니면 더 좋은 방법이 있을까요?
public interface IMyPhone
{
void SwitchOn();
void SwitchOff();
void Dispose();
}
public class PhoneQuestionController : Controller
{
IMyPhone myPhone;
public PhoneQuestionController(IMyPhone myPhone)
{
this.myPhone = myPhone;
}
override Dispose(bool disposing)
{
base.Dispose(disposing);
myPhone.Dispose();
}
}
"Unity가 PhoneBase를 처분할지 모르겠습니다." 무슨 일이 일어 났는지 보려고 했니? – Steven
유니티는 처분과 아무 관련이 없습니다. 요청이 끝날 때 컨트롤러 인스턴스를 삭제하는 것은 MVC 파이프 라인입니다. 이것은 두 번째 버전이 정확하다는 것을 의미합니다. ASP.NET 파이프 라인은 컨트롤러에서'Dispose '를 호출하고 사용자 정의 객체에서'Dispose'를 호출합니다. –