Предоставить типизированный параметр для вложенных зависимостей в Autofac - PullRequest
0 голосов
/ 14 марта 2019

У меня сложилось впечатление, что TypedParameter можно использовать для предоставления значений во время разрешения в Autofac.

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

Есть ли способ сделать это?

public interface IDepA { }

public interface IDepB { }

public interface IDepC { }

public class DepA : IDepA
{
    public DepA(IDepB depB) { }

}

public class DepB : IDepB
{
    public DepB(IDepC depC) { }
}

public class DepC : IDepC { }

[TestMethod]
public void AutofacResolutionTest()
{
    var builder = new ContainerBuilder();

    builder.RegisterType<DepA>().As<IDepA>();
    builder.RegisterType<DepB>().As<IDepB>();

    var container = builder.Build();
    // Works
    var b = container.Resolve<IDepB>(new TypedParameter(typeof(IDepC), new DepC()));
    // Does not work
    var a = container.Resolve<IDepA>(new TypedParameter(typeof(IDepC), new DepC()));
}

1 Ответ

1 голос
/ 14 марта 2019

Краткий ответ: Нельзя передать параметр чему-либо в середине цепочки разрешений.

Это часто задаваемые вопросы в документах Autofac.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...