我有一些全局组件,我不确定如何将它们放入设计中。如:
Settings 类:它是接口程序的初始设置,它可以是后台的 app.config(1way)、web.config(1way)、硬编码值(1way) 或 sqldb(2way)。
语言类:它包含不同的语言集,我可以在它后面有一些 resx 文件(1way)、硬编码值(1way)或 sqldb(2way)。
第一个问题是,我是否应该在依赖注入中设置这些类的属性(我使用 Windsor):
public ISettings Settings {set;}
public ILanguage Language {set;}
或者我应该让它们成为环境上下文:
string DoSomethingAndReportIt() {
//do something ...
var param = Settings.Current.SomeParam;
//report it ...
return Language.Current.SomeClass_SomeMethod_Job_Done;
}
我注意到 .net 库中有一些组件实际上使用环境上下文模式,例如 System.Security.Principal、System.Web.ProfileBase、System.Thread.CurrentCulture ...
您认为将我的全局类(例如 Settings 和 Language)设置为环境上下文类没有害处吗?如果不是,为什么首选 DI?与环境相比,它们在单元测试中是否更具优势?
第二个问题是,如果 DI 更好,(我感觉首选 DI 模式),代理现有环境类(如 Security.Principal 或 Profile)遵循 DI 模式的好方法是什么?