Вызовы внедрения зависимостей в библиотеках. NET Core - PullRequest
0 голосов
/ 19 июня 2020

Каким образом библиотека может правильно вызвать объект, который был внедрен через Dependency Inject?

Фон: у меня несколько. NET Базовое приложение, которое использует внедрение зависимостей для всех основных объектов и использует библиотеки для многоразового использования. Он отлично работает. App1 вызывает Libary1 и Libary2. App2 вызывает Libary2 и Libary3 et c.

service.AddTransient<Libary1.ILibary1Dependency, Libary1.Libary1Dependency>();
service.AddTransient<Libary2.ILibary1Dependency, Libary2.Libary1Dependency>();
service.AddTransient<Libary2.ILibary2Dependency, Libary2.Libary2Dependency>();
service.AddTransient<Libary3.ILibary1Dependency, Libary3.Libary1Dependency>();

Теперь в Libary2.ILibary1Dependency есть метод, который должен вызвать новый Libary2.ILibary2Dependency. Как лучше всего это сделать?

Мне просто сделать new Libary2.ILibary2Dependency(property1, property2...);?

Можно ли в основном приложении фактически внедрить объект IServiceCollection, а затем в конструкторе Libary2.ILibary1Dependency получить IServiceCollection?

Есть ли какой-то пакет самородков, который я не знаете, что это исправляет это идеально?

Примечание: Libary2.ILibary2Dependency вызывается сам по себе через внедрение зависимостей, если вам интересно

1 Ответ

2 голосов
/ 19 июня 2020

Как предложено в комментариях, держите библиотеки независимыми от внедрения зависимостей службы. И позвольте вызывающей стороне принять решение о внедрении их при необходимости, и это поможет сохранить независимость библиотек от IO C Framework.

Если вам нужно изменить IO C Framework или даже обновить до последних версий, вам, вероятно, придется потратить время на обновление в библиотеках, чем больше у вас этих зависимостей, тем больше потребуется уборка дома в конечном итоге.

Я видел людей, создающих общие c оболочки, чтобы избежать c зависимостей от IO C Framework, но это своего рода излишество.

Если все, что у вас есть, это 3 или 4 проекта, не имеет значения их рефакторинг в обоих направлениях.

...