我目前看一下Griffin.Decoupled
和Griffin.Container
库。在我的 ASP.MVC4 应用程序中,我想IocQueryDispatcher
在第一步中使用。
我的问题是注册,
registrar.RegisterType<IQueryDispatcher, IocQueryDispatcher>
因为它IocQueryDispatcher
有IServiceLocator
依赖关系。
ASP.MVC 应用程序中的当前注册看起来像
protected static void Register(ContainerRegistrar registrar)
{
registrar.RegisterType<IQueryDispatcher, IocQueryDispatcher>();
// this dont works because the _container is null
registrar.RegisterInstance<IServiceLocator>(_container);
}
public static void Configure()
{
var registrar = new ContainerRegistrar();
registrar.RegisterApiControllers(Assembly.GetExecutingAssembly());
registrar.RegisterControllers(Assembly.GetExecutingAssembly());
var builder = new ContainerBuilder();
Register(registrar);
// this method creates a new container
_container = registrar.Build();
GlobalConfiguration.Configuration.DependencyResolver = new GriffinWebApiDependencyResolver(_container);
DependencyResolver.SetResolver(new GriffinDependencyResolver(_container));
}
IServiceLocator / 容器本身应该如何注册?(容器应注册为单例)
在分析了图书馆之后,我找不到这样做的方法。