Итак, вот мой фабричный метод, который принимает параметр ...
container.RegisterInstance<Func<IProductInstance, IQuantityModifier[]>>(
instance => container.Resolve<IQuantityModifier[]>());
Теперь один элементов, возвращаемых массивом, принимает параметр IProductInsance в своем конструкторе. Я не могу понять, как заставить Unity передать параметр или, если я вместо этого сделаю аргумент конструктора свойством, как заставить Unity установить свойство. Кажется, никакие переопределения зависимостей, параметры внедрения и т. Д. Ничего не делают.
Конечно, обе эти ситуации были бы просты, если бы я разрешал один экземпляр, но с массивом Unity, похоже, не полностью обрабатывал каждый элемент.
Есть идеи? То, что я в итоге сделал, это что-то вроде ...
container.RegisterInstance<Func<IProductInstance, IQuantityModifier[]>>(
instance =>
{
var items = container.Resolve<IQuantityModifier[]>();
QuantityModifier item = items.OfType<QuantityModifier>().SingleOrDefault();
if (item != null)
{
item.ProductInstance = instance;
}
return items;
};
Я полагаю, что в идеале элемент, для которого требуется параметр, будет создан фабрикой, но тогда Unity должна будет передать правильное значение фабрике и выполнить его.
Приветствия, Ян.