Не может разрешить Словарь в контейнере Единицы

Я только что наткнулся на это:

в контейнере Единицы я хочу зарегистрироваться IDictionary<TK, TV>; предположите, что это IDictionary<string, int>

_unityContainer = new UnityContainer()
    .RegisterType<IDictionary<string, int>, Dictionary<string, int>>();

но если я пробую

var d = _unityContainer.Resolve<IDictionary<string, int>>();

этому не удается решить...

Я добираюсь...

Microsoft. Методы. Единица. ResolutionFailedException: Microsoft. Методы. Единица. ResolutionFailedException: Разрешение зависимости перестало работать, введите = "Система. Наборы. Универсальный. IDictionary '2 [Система. Строка, Система. Int32]", называют =" (ни один)". Исключение произошло в то время как: при разрешении.

Исключение: InvalidOperationException - Словарь типа '2 имеет несколько конструкторов длины 2. Не мог снять неоднозначность.


Во время исключения контейнер был:

Разрешение системы. Наборы. Универсальный. Словарь2[System.String,System.Int32],(none) (mapped from System.Collections.Generic.IDictionary2 [Система. Строка, Система. Int32], (ни один))---> Система. InvalidOperationException: Словарь типа '2 имеет несколько конструкторов длины 2. Не мог снять неоднозначность..

Таким образом, похоже, что это нашло, что Тип решает (быть Dictionary<string, int>) но отказавший к новому это...

Каким образом единица не может разрешить этот тип? Если я ввожу

IDictionary<string, int> d = new Dictionary<string, int>()

это работает...

какие-либо идеи?

спасибо!

11
задан kiwipom 29 April 2010 в 00:01
поделиться

1 ответ

Очень интересная находка +1. Похоже на ошибку в Unity, см. Здесь:

http://unity.codeplex.com/Thread/View.aspx?ThreadId=30292

Вы также можете попробовать следующее:

 container.RegisterType<IDictionary<int, string>, Dictionary<int, string>>
                (new InjectionConstructor());

Это заставляет использовать значение по умолчанию конструктор, что позволяет обойти проблему ...

9
ответ дан 3 December 2019 в 10:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: