我想创建一个多租户ASP.NET核心应用程序。我正在跟踪documentation,并且我正在调用
var mtc = new MultitenantContainer(container.Resolve<ITenantIdentificationStrategy>(), container);
mtc.ConfigureTenant(
tenant.Name,
builder=>
{
// register per-tenant services here
});
我想为每个租户注册一个数据库连接。我正在使用的库在IServiceCollection
上提供了一个扩展方法,所以我通常会调用services.AddDataBase()
,但在lambda中,builder
参数的类型是ContainerBuilder
,所以扩展在这里自然不起作用。
是否有一种方法可以将builder
转换为IServiceCollection
,以便能够调用扩展方法?或者,这是实现扩展方法并复制整个逻辑的唯一方法吗?
发布于 2020-08-08 14:50:51
我想出了一个相当简单的方法:
mtc.ConfigureTenant(
tenant.Name,
builder =>
{
IServiceCollection services = new ServiceCollection();
services.AddDataBase();
builder.Populate(services);
});
我没有将构建器转换为IServiceCollection
,而是实例化了一个新的构建器,然后在ContainerBuilder
上使用Populate()
扩展方法复制绑定。
https://stackoverflow.com/questions/63316373
复制相似问题