Autofac ленивый TypedParameter

на 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 ответов


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

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