假设我们为每个租户提供不同的SMS提供商(每个租户都有自己的SMS提供商,希望通过这些提供商发送SMS)我们如何在ASPNetBoilerplate中实现这种情况?
答案 0 :(得分:0)
如果每个租户只有一个sms提供者,那么您可以在Tenant类上创建一个复杂类型。如果每个租户都有多个sms提供程序,则创建TenantSmsProvider实体。
我不明白你为什么要创建DLL!
答案 1 :(得分:0)
我想你要求依赖注入。
您应该创建一个工厂(比如ISmsProvider
),按租户ID(比如GetProviderByTenantId(int tenantId
)创建短信提供商(比如ISmsProviderFactory
)。这是一种常见的软件模式。然后,您可以随时根据租户注入ISmsProviderFactory
并获取ISmsProvider
。
您可以使用Castle Windsor的API按工厂注册依赖项,而不是创建自定义工厂类。因此,您可以直接在代码中注入SmsProviderFactory
。
现在,问题是如何实施ISmsProvider
?有不同的方法取决于您的要求。但是这部分超出了ABP的范围,你可以在网上找到很多文章。
select d.*, p.Page_Id
from Doctors as d left join PageTable as p
on (d.Region = COALESCE(p.target_region,'NULL')
and COALESCE(d.Country,'NULL') = COALESCE(p.targer_countries,'NULL')
and COALESCE(d.Doctor_Category,'NULL') = COALESCE(p.targer_categories,'NULL'))
添加到字典中(其中字典的键是租户id / name )所以你的工厂可以选择给定租户的注册供应商。