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));
    }
}

person Konstantin Spirin    schedule 16.03.2011    source источник


Ответы (1)


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

builder.RegisterType<RootService>()
  .WithParameter((pi, c) => pi.ParameterType == typeof(IChildService),
                 (pi, c) => c.ResolveNamed<IChildService>(key));
person Nicholas Blumhardt    schedule 16.03.2011