0
在web api控制器中,我用於在using keyword
範圍內創建實例,所以一旦它從使用中出來,GC
將被調用並且內存將被釋放。哪裏應該在web api控制器中創建實例
我現在使用它的代碼,
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);
}
}
}
我的一個collegue的要求我修改如下圖所示:
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實例? 這兩個代碼與創建實例有什麼不同?
我同意Petre - DJ(依賴注入)是做這件事的最好方法。 –