如何避免调用构造函数?

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