У меня есть класс с конструктором, который принимает коллекцию дочерних интерфейсовКак разрешить коллекцию интерфейсов с Unity?
public class Manager : IManager
{
public Manager(IEnumerable<IDataAccess> dataAccess)
{
IDataAccess является базовым интерфейсом
public interface IFooDataAccess : IDataAccess
{
public interface IBarDataAccess : IDataAccess
{
public interface IBazDataAccess : IDataAccess
{
Есть конкретные реализации для каждого из них. Когда я разрешаю IManager, я хочу, чтобы параметр dataAccess был заполнен коллекцией FooDataAccess, BarDataAccess и BazDataAccess.
Я использую единство как IoC, текущая регистрация:
public static void RegisterTypes(IUnityContainer container)
{
container.RegisterTypes(AllClasses.FromAssemblies(
typeof(IManager).Assembly),
WithMappings.FromMatchingInterface,
WithName.Default,
WithLifetime.ContainerControlled);
У меня есть несколько других классов в растворе тоже (следовательно, с использованием регистрационного шаблона), поэтому я хотел бы сохранить это. Я играл вокруг с попыткой зарегистрировать IManager по себе:
var allDataAccesses = container.ResolveAll<IDataAccess>();
var parameter = new InjectionConstructor(allDataAccesses);
container.RegisterType<IManager, Manager>(parameter);
Но я не могу заставить его работать, что я пропавшими без вести. Как настроить единицу для разрешения конструктора?