私は以下の構造を持っています。私が混乱しているのは、PhoneBase
を処分する方法です。 UnityがPhoneBase
を処分するかどうかはわかりません。ユニティで基本クラスを処理するベストプラクティスは
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パイプラインです。これは、2番目のバージョンが正しいことを意味し、ASP.NETパイプラインはコントローラ上で 'Dispose'を呼び出し、カスタムオブジェクトに対して' Dispose'を呼び出します。 –