asp.net mvc 4中静态类的替代方案是什么

本文关键字:方案 是什么 静态类 net mvc asp | 更新日期: 2023-09-27 18:23:55

我在这里看到了静态类&静态函数不好,因为它们占用了大量内存。

我用它来做很多事情,比如需要和数据库交互等等

这个例子是静态本地化类的一部分,GetResources

public static class SFLocalization
{
    public static string GetResources(string key)
    {
          string CurrentLanguage = System.Threading.Thread.CurrentThread.CurrentUICulture.ToString();
          if (MemoryCache.Default["Resources_" + key] == null)
          {
          string x 
          using (Db _db = new Db())
            {
                MemoryCache.Default["Resources_" + key] = _db.Languages.First(l => l.Key == key && l.LanguageCode == CurrentThread).Value;
            }
          }
          return MemoryCache.Default["Resources_" + key];
    }
}

然后在视图中,控制器等。我写这篇文章是为了得到翻译后的值

 @SFLocalization.GetResources("NewsletterBoxTitle")

1.)静态课堂在这种情况下真的那么糟糕吗?

2.)替代方案是什么?也许是依赖注入(ninject等)??(我在Apress-Pro Asp.net Mvc 4 一书中看到过

静态类(或模块)通常是域或应用程序服务的替代品。将此服务公开为静态类通常很方便,这样就可以从任何地方访问它——如果它是一个跨领域的问题(如本地化),则更是如此。

这种方法可以让你快速启动和运行,但它确实存在一些问题。能够在任何地方/任何时间访问该服务会鼓励糟糕的编码实践,并且很容易导致意大利面条式代码。静态模块也使得使用它们的类很难进行单元测试。这两个问题都会随着项目规模的增加而呈指数级增长,所以尽快解决它们通常是个好主意。

正如您在问题中提到的,依赖项注入是确保类可以访问服务的一种方法,而不会使其成为静态/全局的。

asp.net mvc 4中静态类的替代方案是什么