Вопрос

Я использую AUTOFAC 2.1.12, чтобы обрабатывать мою инъекцию зависимости, и у меня проблемы с одной конкретной проблемой. Кажется, я не могу решить зависимость от имени целесообразности.

Рассмотрим следующий фрагмент кода:

class Foo
{
    public Foo(NameValueCollection collection) { }
}

static class Run
{
    public static void Main()
    {
        var builder = new ContainerBuilder();
        builder.RegisterType<NameValueCollection>();
        builder.RegisterType<Foo>();

        using (var scope = builder.Build())
            scope.Resolve<Foo>();
    }
}

Он потерпел краю с необработанной зависимостьюResolutexception:

Обнаружена зависимость от круглой компоненты: FOO -> System.Collections.specialized.nameValueCollection -> System.Collections.specialized.namevalueCollection.

Однако, если я заменил имяValueCollection с любым другим типом, код работает нормально.

Я делаю что-то захоронение, есть ли что-то особенное в отношении типа namevaluecollection, который мне не хватает, или это проблема с самой Autofac?

Это было полезно?

Решение

Это по дизайну. Видеть Перевозить:

Autofac автоматически выбирает конструктор с большинством параметров, которые могут быть получены из контейнера.

Попробуйте зарегистрироваться NameValueCollection Вроде так (не уверен, что будет работать, хотя):

builder.RegisterType<NameValueCollection>().UsingConstructor();

Если это не работает, попробуйте

builder.Register(c => new NameValueCollection());
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top