C# 4.0 容器/Griffin.Decoupled:容器本身的注册
我现在看一下C# 4.0 容器/Griffin.Decoupled:容器本身的注册,c#-4.0,domain-driven-design,C# 4.0,Domain Driven Design,我现在看一下Griffin.Decoupled和Griffin.Container库。 在我的ASP.MVC4应用程序中,我希望在第一步中使用IocQueryDispatcher 我的问题是注册 register.RegisterType 因为IocQueryDispatcher具有IServiceLocator依赖关系 ASP.MVC应用程序中的当前注册如下所示 protected static void Register(ContainerRegistrar registrar) {
Griffin.Decoupled
和Griffin.Container
库。
在我的ASP.MVC4应用程序中,我希望在第一步中使用IocQueryDispatcher
我的问题是注册
register.RegisterType
因为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));
}
受保护的静态无效寄存器(ContainerRegistrar注册器)
{
register.RegisterType();
//这不起作用,因为_容器为空
注册机构注册机构(容器);
}
公共静态void Configure()
{
var register=new containerregistar();
register.registerapicontroller(Assembly.getExecutionGassembly());
register.RegisterController(Assembly.getExecutionGassembly());
var builder=new ContainerBuilder();
注册主任;
//此方法创建一个新容器
_container=registrator.Build();
GlobalConfiguration.Configuration.DependencyResolver=新的GriffinWebApiDependencyResolver(_容器);
SetResolver(新的GriffinDependencyResolver(_容器));
}
iSeries Vicelocator/容器本身应该如何注册?
(容器应注册为singleton)
在分析了这些库之后,我找不到这样做的方法。您必须在Griffin.Decoupled和Griffin.Container之间安装适配器:
install-package griffin.decoupled.container
然后,只需将注册行替换为:
registrar.DispatchQueries();
样本可以在这里找到:ah,错过了看样本。