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)