gpt4 book ai didi

c# - asp.net mvc 4 中静态类的替代方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 19:14:54 24 4
gpt4 key购买 nike

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];
}
}

然后在 View 中, Controller 等。我只写这个来获取翻译后的值

 @SFLocalization.GetResources("NewsletterBoxTitle")

1.) 在那些情况下静态类真的那么糟糕吗?

2.) 还有什么选择?也许是依赖注入(inject)(ninject 等)??(我在Apress - Pro Asp.net Mvc 4这本书里看到过

最佳答案

静态类(或模块)通常是域或应用程序服务的替代品。将此服务公开为静态类通常很方便,以便可以从任何地方访问它 - 如果它是一个横切关注点(例如本地化),则尤其如此。

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

正如您在问题中提到的,依赖注入(inject)是一种确保类可以访问服务的方法,无需将其设为静态/全局。

关于c# - asp.net mvc 4 中静态类的替代方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17718682/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com