Мне нужно ввести коллекцию типа IList<IActivity>
в конструктор. Я использую Unity 2.0 и настраиваю его с помощью XML.Как вставить общий IList <> объектов с использованием Unity 2 XML config?
Я смог сделать это, просто введя массив в Unity 1.2. Я только что обновился до Unity 2.0, и теперь моя конфигурация перестала работать в этой конкретной области. (. Я решил все тривиальные изменения в схеме)
Мой конструктор выглядит следующим образом:
public DoSomethingWorkflow(IList<IActivity> activityCollection)
{
...
}
Моя конфигурация выглядит следующим образом:
<alias alias="IListOfIActivity" type="System.Collections.Generic.IList`1[[MyProject.IActivity, MyProject]], mscorlib"/>
<alias alias="IActivityArray" type="MyProject.IActivity[], MyProject" />
<register type="IWorkflow" mapTo="Workflow" name="DoSomethingWorkflow">
<constructor>
<param name="activityCollection" type="IListOfIActivity">
<array>
<dependency name="DoSomethingActivity1"/>
<dependency name="DoSomethingActivity2"/>
</array>
</param>
</constructor>
</register>
При запуске конфигурации, как описано выше Я получаю сообщение об ошибке «Конфигурация настроена для ввода массива, но тип IList`1 не является типом массива».
Если изменить его, как она используется для работы (инъекционного типа псевдоним IActivityArray) Я получаю сообщение об ошибке, говорящее "конфигурация неправильна, тип MyProject.Workflow не имеет конструктор, который принимает параметры имени activityCollection ».
Если я полностью удаляю атрибут типа из элемента конструктора, я получаю такое же сообщение об ошибке, как указано выше.
Единственный способ, которым я могу заставить это работать, - это изменить конструктор, чтобы вместо этого принять массив IActivity [].
Так это ошибка в Unity, поскольку массив является IList и должен найти конструктор? Или мне что-то не хватает в моей конфигурации?
Большой , Я только что получил значок Tumbleweed для этого! Может ли кто-нибудь помочь? – freshr
Вы когда-нибудь это выясняли? –