[英]What is the alternative to Static Class in asp.net mvc 4?
我在这里看到静态类和静态函数不好,因为它们占用大量内存。
我将它用于需要与数据库等交互的许多事情。
此示例是静态本地化类的一部分,即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》一书中看到了
静态类(或模块)通常是域或应用程序服务的替代品。 将该服务公开为静态类通常很方便,以便可以从任何地方访问它-如果是诸如本地化这样的跨领域问题,则尤其如此。
这种方法可以使您快速启动并运行,但是确实存在一些问题。 能够随时随地访问该服务会鼓励不良的编码习惯,并很容易导致产生意大利面条式的代码。 静态模块还使使用它们的类很难进行单元测试。 这两个问题都会随着您的项目规模的增加而成倍增加-因此,最好尽快解决这些问题。
正如您在问题中提到的那样,依赖注入是一种确保类可以访问服务而不使其成为静态/全局访问的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.