我有以下结构。我很困惑的是如何处置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
Unity与处置无关。它是在请求结束时处理控制器实例的MVC管道。这意味着第二个版本是正确的,ASP.NET管道在你的控制器上调用Dispose,并在你的自定义对象上调用Dispose。 –