我有很多像这样的课程。他们都有两个共同点。他们声明了一个名为Context的私有变量,他们有一种方法可以使用它。
有没有办法可以创建一个我可以继承的中间类,它有代码来声明变量和dispose方法?我认为这很容易,但我不确定如何声明变量和方法。它们应该是私人的吗?
public class TypeController : ApiController
{
private Context db = new Context();
[Route("GetMapData")]
public async Task<IHttpActionResult> GetMapData()
{
var result = await db.Types
.Select(e => new
{
Id = e.TypeId,
Name = e.Name
})
.ToListAsync();
return Ok(result);
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
}
答案 0 :(得分:2)
您最好使用依赖注入。
尝试使用一些依赖项解析器来维护对象的生命周期 你可以从这里开始http://www.asp.net/web-api/overview/extensibility/using-the-web-api-dependency-resolver
答案 1 :(得分:0)
您可以创建一个基类,并将db
变量声明为protected
public class BaseController : ApiController
{
protected Context db = new Context();
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
}
public class TypeController : BaseController
{
[Route("GetMapData")]
public async Task<IHttpActionResult> GetMapData()
{
var result = await db.Types
.Select(e => new
{
Id = e.TypeId,
Name = e.Name
})
.ToListAsync();
return Ok(result);
}
}