Я работаю над устаревшим кодом.
У меня есть разные методы одного и того же класса, которые передают разные аргументы конструктору зависимости. Я пытаюсь представить немного базового использования IoC. Прямо сейчас у меня есть StructureMap, передающий мои аргументы так:
var thing = ObjectFactory.GetInstance<IThingInterface>(new ExplicitArguments(
new Dictionary<string, object> {
{ "constructorArgA", notShown },
{ "constructorArgB", redacted.Property } }));
Где фактические свойства, переданные для constructorArgA и B, меняются в зависимости от того, где я нахожусь.
Вместо "constructorArgA" есть способ настроить это через фактические типы, как вы можете сделать при настройке objectFactory, например:
x.For<IHidden>().Use<RealType>()
.Ctor<IConfig>().Is(new Func<IContext, IConfig>(
(context) => someMethodToGetIConfig()));
Если бы я писал это с нуля, я бы, вероятно, структурировал зависимости немного иначе, чтобы избежать этого, но сейчас это не вариант для меня.