我已经在世界各地寻找答案,但找不到任何答案。
我正在将ASP WebForms应用程序重写为ASP MVC。我一直在使用nInject,对于大多数对象,这很好。我正在努力解决的问题是如何在每个视图中显示全局应用程序设置。
WebForms应用程序使用带有静态构造函数的静态类,使用EF上下文将设置表(名称,值)转换为字典,然后从属性中读取属性。
在MVC中执行此操作的最佳方法是什么?显然,我仍然可以使用静态类,但是如何注入ISettingRepository,因为静态构造函数必须是无参数的?
对不起,如果不是很清楚,那就很难解释= /
答案 0 :(得分:0)
我认为没有理由继续使用static
课程,尤其是当您使用Ninject
时。
将静态类更改为在其构造函数中接受ISettingsRepository
的普通类,并让Ninject
在Singleton
范围内为您实例化。
或者,您可以使用static
课程并使用Ninject
解决ISettingsRepository
Service Locator
模式,例如:
public static class MyAppSettings
{
private static ISettingsRepository _rep;
MyAppSettings()
{
}
public static string Get(string key)
{
// instantiate if null
if (_rep == null)
_rep = kernel.Get<ISettingsRepository>();
// ...
}
// ...
}