
Допустим, вам захотелось, на всякий случай, сохранить копию всех пакетов nuget.org. Как обнаружить и скачать все пакеты не привлекая внимания админов сервиса?
Пользователь
Допустим, вам захотелось, на всякий случай, сохранить копию всех пакетов nuget.org. Как обнаружить и скачать все пакеты не привлекая внимания админов сервиса?
IT
и factory метод типаinterface IT {}
public IT CreateT(IA a, IB b, IC c, Type concreteType)
{
// куча говнокода, который создает объект типа concreteType, определяемого в месте вызова в рантайме.
}
IT
, имеют конструкторы с разными сигнатурами, принимающими какую-то комбинацию объектов типов IA
, IB
или IC
, поэтому с ростом количества реализаций IT
, код их создания начинал пахнуть все сильнее, и, наконец, было принято решение его выкинуть и заменить простым кодом с Unity, примерно такого содержания:private static IT CreateITInternal(IA a, Type targetType)
{
using (UnityContainer cont = new UnityContainer())
{
cont.RegisterInstance<IA>(a, new ExternallyControlledLifetimeManager());
cont.RegisterType(typeof(IT), targetType, new ExternallyControlledLifetimeManager());
return cont.Resolve<IT>();
}
}
IA
, чтобы не загромождать код. Unity нам тут нужен только для облегчения инстанциирования объектов и мы не хотим давать ему контролировать время жизни никаких объектов, поэтому использован ExternallyControlledLifetimeManager
)