0

我目前看一下Griffin.DecoupledGriffin.Container库。在我的 ASP.MVC4 应用程序中,我想IocQueryDispatcher在第一步中使用。

我的问题是注册, registrar.RegisterType<IQueryDispatcher, IocQueryDispatcher> 因为它IocQueryDispatcherIServiceLocator依赖关系。

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 / 容器本身应该如何注册?(容器应注册为单例)

在分析了图书馆之后,我找不到这样做的方法。

4

1 回答 1

1

您必须在 Griffin.Decoupled 和 Griffin.Container 之间安装适配器:

install-package griffin.decoupled.container

然后只需将注册行替换为:

registrar.DispatchQueries();

Samples can be found here: https://github.com/jgauffin/Samples/tree/master/Griffin.Decoupled

于 2012-11-15T09:53:44.687 回答