我有一个基于多租户的应用程序,要求用户针对租户进行注册。
我有一个控制器:
public class AccountController : Controller
{
private readonly IAccountService _accountService;
private string TenantId
{
get
{
return HttpContext.Request.GetTenantId();
}
}
public AccountController(IAccountService accountService)
{
_accountService = accountService;
accountService.TenantId = TenantId;
}
}
这将从标题中获取租户,并在具体类TenantId
中设置AccountService
属性,如下所示:
public class AccountService : IAccountService
{
private readonly IAccountManager _accountManager;
public string TenantId { get; set; }
public AccountService(IAccountManager accountManager)
{
_accountManager = accountManager;
_accountManager.TenantId = TenantId;
}
}
TenantId
然后需要设置一个具体类的另一个属性才能最终使用,如下所示:
public class AccountManager: IAccountManager
{
public string TenantId { get; set; }
public AccountManager()
{
}
}
我觉得获得和设置仅仅是为了使TenantId
一直到达业务层是太多了。
我应该将TenantId
作为参数传递给方法吗?如果没有,那么您什么时候希望将其传递给参数而不是设置公共属性?