Unity умеет резолвить зависимости-массивы. Для такой зависимости контейнер возвращает объекты всех подходящих типов. Даже при разрешении зависимостей с указанием имени будут возвращены все подходящие типы.
Также этого Unity поддерживает разрешение обобщенных массивов.
Пример
Интерфейс и классы логгеров
public interface ILogger
{
void Write(string message);
}
public class TraceLogger: ILogger
{
public void Write(string message)
{
Trace.Write(message);
}
}
public class ConsoleLogger: ILogger
{
public void Write(string message)
{
Console.WriteLine(message);
}
}
Сервис, принимающий обобщенный массив
public class SomeService2<T>
{
public SomeService2(T[] array)
{
}
}
Код, получающий нужный экземпляр
var container = new UnityContainer();
container
.RegisterType<ILogger, ConsoleLogger>("ConsoleLogger")
.RegisterType<ILogger, TraceLogger>("TraceLogger");
var service = container.Resolve<SomeService2<ILogger>>();
При вызове такого кода в конструктор SomeService2 будет передан массив из двух логгеров.
