Если бы я правильно понял проблему (и учел, что трудно найти правильное решение, не увидев реальный код), подход был бы следующим.
Предположим, у вас есть следующая структура решения:
SharedLib(can be just dll/nuget)
...
AppOne(refs and DI's shared)
...
AppTwo(refs and DI's shared)
...
Тогда что вам нужно сделать:
SharedLib
...
Shared.DI (refs SharedLib and package with your IoC container, and other stuff if needed)
...
AppOne (refs Shared.DI)
...
AppTwo (refs Shared.DI)
...
В Shared.DI
вы создаете метод с именем как RegisterShared
, который будет обрабатывать все регистрации и будет вызываться из AppOne
и AppTwo
. Я бы предложил что-то вроде этого:
public static RegistrationExtensions
{
public static void RegisterShared(this YourIoCBuilder builder,
Action<YourIoCBuilder> registerUniqueServiceAction)
{
// do the common stuff
registerUniqueServiceAction(builder);
}
}
Вы можете опустить registerUniqueServiceAction
и зарегистрировать необходимый сервис непосредственно перед или после, но лично я предпочитаю более явный API, поэтому было бы очевидно, что этот метод не регистрируется все необходимое для работы SharedLib
. Также в зависимости от того, какой именно Io C вы используете, вы можете предоставить более очевидную подпись для registerUniqueServiceAction
, чтобы было понятно, что на самом деле нужно.