web apiコントローラでは、using keyword
内にインスタンスを作成していましたので、使用後にはGC
が呼び出され、メモリが解放されます。インスタンスはWeb APIコントローラで作成する必要があります
public class TemplateController : AutoVHCBaseApiController
{
private readonly ITemplateManager manager;
public TemplateController()
{
manager = new TemplateManager();
}
[Route("{id}")]
[HttpGet]
[ResponseType(typeof(VHC.Core.Common.Beans.CheckTemplate))]
public IHttpActionResult Get(int id)
{
try
{
CheckTemplate checkTemplate = manager.GetCheckTemplate(id, SiteCode);
return Ok(checkTemplate);
}
catch (ValidationException ex)
{
return BadRequest(ex.Message, FailureReason.ReasonCodeOptions.ValidationError);
}
}
}
はなぜconstuctorでインスタンスを作成する必要があります。私の同僚の
私が今使っているコード、
public class TemplateController : AutoVHCBaseApiController
{
[Route("{id}")]
[HttpGet]
[ResponseType(typeof(VHC.Core.Common.Beans.CheckTemplate))]
public IHttpActionResult Get(int id)
{
try
{
using(ITemplateManager manager=new TemplateManager())
{
CheckTemplate checkTemplate = manager.GetCheckTemplate(id, SiteCode);
return Ok(checkTemplate);
}
}
catch (ValidationException ex)
{
return BadRequest(ex.Message, FailureReason.ReasonCodeOptions.ValidationError);
}
}
}
一つは以下のように変更するために私に尋ねましたか? 両方のコードとインスタンスの作成の違いは何ですか?
私はPetreと同意しました - DJ(依存症注入)はこれを行うための最善の方法です。 –