【发布时间】:2013-07-18 08:45:00
【问题描述】:
我seen here 认为静态类和静态函数不好,因为它们占用大量内存。
我将它用于许多需要与数据库交互等的事情。
这个静态本地化类的一部分的例子,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 一书中看到过
【问题讨论】:
-
我想你忘了把“这里”(在“我看到 这里 静态类和静态函数不好......”)链接。你到底指的是什么?
-
“我在这里看到静态类和静态函数很糟糕,因为它们占用大量内存。” 这不是真的。
-
静态类不太好,因为它们不容易被模拟。使用 IoC,您可以将单个实例公开为单例,但是您仍然可以控制该对象。这样你就可以将它们模拟成类,因为它们是一个依赖项。
-
从
static class members are never GC'd开始,我部分同意你,但我永远不会同意static functions take lot of memory。函数是否占用内存(如果仅声明局部变量,它也会在超出范围后很快被 GC 处理)?这个说法是错误的! -
那么,用静态类取翻译文本好不好?
标签: c# asp.net asp.net-mvc-3 asp.net-mvc-4 dependency-injection