Autofac ленивый TypedParameter - PullRequest
6 голосов
/ 16 марта 2011

В Autofac можно ли сделать TypedParameter ленивым?Более того, мне нужен доступ к контейнеру при введении параметра.Код может выглядеть так:

builder.RegisterType<RootService>()
    .WithParameter(TypedParameter.From(c => c.Resolve<IChildService>(key)));

Обновление

На основании ответа Ника я создал следующий вспомогательный метод:

public static class TypedResolvedParameter 
{
    public static ResolvedParameter From<T>(Func<IComponentContext, T> factory)
    {
        return new ResolvedParameter(
            (pi, c) => pi.ParameterType == typeof(T),
            (pi, c) => factory(c));
    }
}

1 Ответ

9 голосов
/ 16 марта 2011

Вы ищете ResolvedParameter, также доступно как перегрузка на WithParameter():

builder.RegisterType<RootService>()
  .WithParameter((pi, c) => pi.ParameterType == typeof(IChildService),
                 (pi, c) => c.ResolveNamed<IChildService>(key));
...