Asp.net mvc 使用Castle Windsor在ASP.NET MVC中实现多租户的最佳实践是什么?
我有一个具有两种不同实现的服务,我想将其注入控制器构造函数,这取决于一个标准(目前标准是存储在会话中的一个简单值) 这是我现在得到的 服务接口:Asp.net mvc 使用Castle Windsor在ASP.NET MVC中实现多租户的最佳实践是什么?,asp.net-mvc,castle-windsor,Asp.net Mvc,Castle Windsor,我有一个具有两种不同实现的服务,我想将其注入控制器构造函数,这取决于一个标准(目前标准是存储在会话中的一个简单值) 这是我现在得到的 服务接口: public interface IService { string GetSampleText(); } 实施#1: 实施#2: 在温莎安装程序类别中注册: container.Register(AllTypes .FromAssemblyInDirectory(new AssemblyFilter(HttpRuntime.BinDir
public interface IService
{
string GetSampleText();
}
实施#1:
实施#2:
在温莎安装程序类别中注册:
container.Register(AllTypes
.FromAssemblyInDirectory(new AssemblyFilter(HttpRuntime.BinDirectory))
.BasedOn<IService>()
.WithService.FromInterface()
.Configure(c => c.LifeStyle.Transient));
container.Kernel.AddHandlerSelector(new ServiceHandlerSelector());
在这个IHandlerSelector实现的HasOpinionAbout方法中,我可以决定在SelectHandler方法中选择哪个处理程序(取决于会话中的值)
然后构造函数注入在控制器上正常工作:
public MyController(IService service) { ... }
所以我得到了一个有效的解决方案,但我不确定这是否是最好的方法
意见?建议
非常感谢。您使用处理程序选择器的方法是正确的。以下是一些关于将它们用于多租户的好文章,您可以参考它们:
container.Register(AllTypes
.FromAssemblyInDirectory(new AssemblyFilter(HttpRuntime.BinDirectory))
.BasedOn<IService>()
.WithService.FromInterface()
.Configure(c => c.LifeStyle.Transient));
container.Kernel.AddHandlerSelector(new ServiceHandlerSelector());
public class ServiceHandlerSelector : IHandlerSelector { ... }
public MyController(IService service) { ... }