将静态方法与 IOC 数据访问结合使用
本文关键字:结合 访问 数据 静态方法 IOC | 更新日期: 2023-09-27 17:56:54
我有一个使用存储库模式的MVC项目。我也在IOC容器中使用Ninject。不过,我在项目加载时存储一些缓存值时遇到了问题。
在我的 Global.asax 中.cs我有:
...(some settings)
ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());
....
...CustomDataCache.Configure();
在我的控制器工厂中,我有我需要的绑定:
_ninjectKernal.Bind<IDataContext>().To<DataContext>()
.WithConstructorArgument("appNamekey", "Name of Data Application")
.WithConstructorArgument("serverLocationNameKey", "Location of Application Server");
在我的自定义缓存类中,我想做这样的事情:
private IDataContext _context;
private CustomDataCache(IDataContext context)
{
_context = context;
}
public static void Configure(){
System.Web.HttpContext.Current.Cache["NDECCategories"] = _context.GetNdecCategories();
我想从全局静态调用 Configure(),但是当我需要 DataContext 的实例时,我该怎么做?
谢谢
解析依赖关系各不相同。对于网络表单...
Public Class _Default
Inherits Page
<Dependency()>
Public Property _userService As IUserService
对于 MVC
public UserController(IDataContextAsync context)
实际上,您不需要直接从 Web 应用程序访问数据上下文。您应该访问在构造函数中具有 IDataContextAsync 设置的服务...
Public Class UserService
Inherits Service(Of User)
Implements IUserService
Private ReadOnly _repository As IRepositoryAsync(Of User)
Public Sub New(repository As IRepositoryAsync(Of User))
MyBase.New(repository)
_repository = repository
End Sub
为什么不在Configure
方法中将类别作为参数传入?
var _context = DependencyResolver.Current.GetService<IDataContext>();
var categories = _context.GetNdecCategories();
CustomDataCache.Configure(categories);