На моем уровне опыта работы с Unity, возможно, будет быстрее спросить, была ли исправлена ошибка "обработки дженериков", признанная ctavares еще в 2008 , в публичном выпуске.
Здесь была проблема (которая может быть моей проблемой сегодня):
Привет
Я получаю исключение при использовании ....
container.RegisterType (TypeOf (IDictionary <,>),
TypeOf (Dictionary <,>));
Исключением является ...
"Не удалось разрешить зависимость,
type = \ "IDictionary 2\", name = \"\".
Exception message is: The current
build operation (build key Build
Key[System.Collections.Generic.Dictionary
2 [System.String, System.String],
null]) не удалось: текущая сборка
операция (ключ сборки Build
Клавиша [System.Collections.Generic.Dictionary 2[System.String,System.String],
null]) failed: The type Dictionary
2
имеет несколько конструкторов длины
2. Невозможно устранить неоднозначность.
Когда я пытаюсь ...
IDictionary
myExampleDictionary =
container.Resolve> ();
Здесь был модерируемый ответ:
Нет книг, которые бы помогли, Unity слишком нова для издателей, чтобы их догнать.
К сожалению, вы столкнулись с ошибкой в нашей работе с генериками. В настоящее время это исправлено в нашей внутренней версии, но пройдет немного времени, прежде чем мы сможем разобраться. В то же время, в качестве обходного пути вы могли бы сделать что-то вроде этого:
открытый класс WorkaroundDictionary: словарь
{
public WorkaroundDictionary () {}
}
container.RegisterType (TypeOf (IDictionary <,>), TypeOf (WorkaroundDictionary <,>)); * * тысяча тридцать четыре
WorkaroundDictionary имеет только конструктор по умолчанию, поэтому он не создает проблем. Поскольку остальная часть вашего приложения написана на языке IDictionary, когда мы получим фиксированную версию, вы можете просто заменить регистрацию настоящим классом Dictionary, исключить обходной путь, и все будет по-прежнему работать.
Извините за ошибку, она скоро будет исправлена!