在Web应用程序中使用静态方法的正确方法

时间:2014-03-06 16:29:24

标签: c# .net asp.net-mvc

我有一个带有存储库层和WebUI层的Web应用程序。

基本上我用一些来自这个存储库dll的数据填充一些网格。其实我是这样做的:

private DemoRepository _demoRepository;

public DemoController()
{
    _demoRepository = new DemoRepository();
}

public ActionResult Demonstration()
{
     return View(_demoRepository.GetAll());
}

我的问题是,实际上我不需要每次都创建一个对象,所以我可以使DemoRepository静态并直接在ActionResult方法中调用:

public ActionResult Demonstration()
{
     return View(DemoRepository.GetAll());
}

但除此之外我知道在Web应用程序中使用静态变量并不是一个好习惯,但在这种情况下我正在执行一个获取某些数据的方法,这是正确的吗?

1 个答案:

答案 0 :(得分:1)

静态方法不会伤害,只要静态方法接收方法调用中的所有依赖项作为参数,并且不会为方法调用内的存储库全局更改任何内容。

如果你要违反这两件事之一(即:通过属性进行DI或使用连接字符串的魔法),那么我会坚持实例化存储库并调用其GetAll()方法。