如何避免调用构造函数?
How to avoid call of constructor?
我正在使用 REST API 和 ASP.NET 和 AngularJS 创建项目。
我的存储库:
Class MyRepository {
private int myVariable;
public MyRepository() {
myVariable = 100;
}
public int getMyVariable() {
return myVariable;
}
public int Update(int data) {
myVariable = data;
return data;
}
}
控制器:
public Class MyController : ApiController {
private MyRepository repository = new MyRepository();
[Route("myRoute")]
public int getVariable() {
return getMyVariable();
}
[Route("myRoute")]
[HttpPut]
public IHttpActionResult Update(int data)
{
data = repository.Update(data);
return Ok(data);
}
}
JS服务中的方法:
getMyNumber = function () {
return $http.get("/myRoute");
};
updateMyNumber = function (number) {
return $http.put("/myRoute", number);
}
首先我调用了函数getMyNumber
。结果是 100(好的)。然后我将它更新为 50。有一个断点,我可以看到它在存储库中确实是 50。当我再次调用 getMyNumber
函数时,结果是 100。
看起来我的每个请求都调用了 MyController
的构造函数。如果是这样,更新数据和使用更新数据的方式是什么?
是的,控制器的范围是针对每个请求的,因此每次有请求时,您都要更新它以及您的存储库对象。听起来您正在避免对数据库的需求,并且在应用程序的生命周期之外不需要任何持久性。因此,在那种情况下,您要在应用程序生命周期范围内存储一个值,这意味着要处理并发性。也许您需要的是此处描述的解决方案之一:http://www.wiktorzychla.com/2010/12/container-based-pseudosingletons-in.html
我正在使用 REST API 和 ASP.NET 和 AngularJS 创建项目。
我的存储库:
Class MyRepository {
private int myVariable;
public MyRepository() {
myVariable = 100;
}
public int getMyVariable() {
return myVariable;
}
public int Update(int data) {
myVariable = data;
return data;
}
}
控制器:
public Class MyController : ApiController {
private MyRepository repository = new MyRepository();
[Route("myRoute")]
public int getVariable() {
return getMyVariable();
}
[Route("myRoute")]
[HttpPut]
public IHttpActionResult Update(int data)
{
data = repository.Update(data);
return Ok(data);
}
}
JS服务中的方法:
getMyNumber = function () {
return $http.get("/myRoute");
};
updateMyNumber = function (number) {
return $http.put("/myRoute", number);
}
首先我调用了函数getMyNumber
。结果是 100(好的)。然后我将它更新为 50。有一个断点,我可以看到它在存储库中确实是 50。当我再次调用 getMyNumber
函数时,结果是 100。
看起来我的每个请求都调用了 MyController
的构造函数。如果是这样,更新数据和使用更新数据的方式是什么?
是的,控制器的范围是针对每个请求的,因此每次有请求时,您都要更新它以及您的存储库对象。听起来您正在避免对数据库的需求,并且在应用程序的生命周期之外不需要任何持久性。因此,在那种情况下,您要在应用程序生命周期范围内存储一个值,这意味着要处理并发性。也许您需要的是此处描述的解决方案之一:http://www.wiktorzychla.com/2010/12/container-based-pseudosingletons-in.html