Asp.net mvc 尝试使用Castle Windsor在ASP.NET MVC中实现多租户
我已使用以下代码注册了我的实现:Asp.net mvc 尝试使用Castle Windsor在ASP.NET MVC中实现多租户,asp.net-mvc,dependency-injection,inversion-of-control,castle-windsor,castle,Asp.net Mvc,Dependency Injection,Inversion Of Control,Castle Windsor,Castle,我已使用以下代码注册了我的实现: container.Register(Component.For<IDatabaseProvider>().ImplementedBy<SqlDatabaseProvider>().LifeStyle.Transient.NamedAutomatically("SqlDatabaseProvider")); container.Register(Component.For<IDatabaseProvider>().Implem
container.Register(Component.For<IDatabaseProvider>().ImplementedBy<SqlDatabaseProvider>().LifeStyle.Transient.NamedAutomatically("SqlDatabaseProvider"));
container.Register(Component.For<IDatabaseProvider>().ImplementedBy<MySqlDatabaseProvider>().LifeStyle.Transient.NamedAutomatically("MySqlDatabaseProvider"));
在我的HandlerSelector的“SelectHandler”方法中:
密钥似乎总是空的。类型输入正确,处理程序中包含两个实现
如何为该方法提供密钥,以便根据密钥选择实现
谢谢
甘尼什你是如何解决的?为什么你甚至需要SelectHandler中的密钥?@MauricioScheffer我为延迟道歉。直到现在我才注意到回应。IDatabaseProvider实际上是我正在使用的每个服务的一个属性,它是通过以下方式解析的:
container.Register(Component.For(typeof(IProjectService)).ImplementedBy(typeof(ProjectService))
和container.Register(Component.For(typeof(IItemService)).ImplementedBy(typeof(ItemService))
。第一个服务需要SqlProvider,第二个需要MySqlProvider。但是在当前的设置中,它正在解析这两个服务的SqlProvider。但是如果我能够识别密钥,就很容易识别它。
Kernel.AddHandlerSelector(new DatabaseProviderHandlerSelector());
public IHandler SelectHandler(string key, Type service, IHandler[] handlers)