Является ли это злоупотреблением внедрением зависимостей? (когда зависимости не являются зависимостями)C#

Место общения программистов C#
Ответить
Anonymous
 Является ли это злоупотреблением внедрением зависимостей? (когда зависимости не являются зависимостями)

Сообщение Anonymous »

У нас есть мультитенантное веб-приложение, в котором множество страниц работают в каждом арендаторе. В результате многие наши интерфейсы выглядят вот так

Код: Выделить всё

interface ISprocketDeployer
{
void DeploySprocket(int tenantId);
}
Мне пришло в голову, что, возможно, было бы лучше упростить эти интерфейсы, чтобы они не знали идентификатор арендатора. Тогда страницы также не будут знать идентификатор tenantId, например

Код: Выделить всё

[Inject] // Ninject
public ISprocketDeployer SprocketDeployer { get; set; }

private void _button_OnClick(object sender, EventArgs e)
{
SprocketDeployer.DeploySprocket();
}
Среда внедрения зависимостей затем внедрит идентификатор клиента в качестве зависимости, просматривая текущего аутентифицированного пользователя. Это хорошая идея или просто злоупотребление внедрением зависимостей?

Мне также пришло в голову, что многие реализации также используют дополнительные зависимости просто для поиска. получить подробную информацию об арендаторе и что я мог бы еще больше сократить количество зависимостей, просто введя эту информацию напрямую, например

Код: Выделить всё

class SprocketDeployer
{
public SprocketDeployer(ITenantRepository tenantRepository)
{
_tenantRepository = tenantRepository;
}

void DeploySprocket(int tenantId)
{
var tenantName = _tenantRepository.GetTenant(tenantId).Name;
// Do stuff with tenantName
}
}
Станет

Код: Выделить всё

class SprocketDeployer
{
public SprocketDeployer(Tenant tenant)
{
_tenant = tenant;
}

void DeploySprocket()
{
var tenantName = _tenant.Name;
// Do stuff with tenantName
}
}
Затем я понял, что могу таким же образом добавить и другие «зависимости», например сведения о вошедшем в систему пользователе.

В этот момент я начинаю сомневаться. Хотя поначалу это казалось фантастической идеей, я понял, что не уверен, когда прекратить добавлять дополнительные «зависимости». Как мне решить, что должно быть зависимостью, а что — параметром?

Подробнее здесь: https://stackoverflow.com/questions/228 ... ependencie
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»