Не может разрешить название NameValueCollection с Autofac
-
24-09-2019 - |
Вопрос
Я использую 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());