Как обощённые классы использовать в коллекции?
У класса есть такие зависимости.
private readonly IDataReceiver<A> _receiverA;
private readonly IDataReceiver<B> _receiverB;
Разные типы / разные базы данных
Хотелось бы их поместить в коллекцию, чтобы конструктор класса был с меньшим количеством параметров, но в таком случае что то совсем страшное выходит что вообще непонятно становится что классу нужно) типа такого:
private readonly Dictionary<Type, object> _receivers;
А использование:
var receiverA = new MockReceiver<A>();
var receiverB = new MockReceiver<B>();
var receivers = new Dictionary<Type, object>
{
{ typeof(A), receiverA },
{ typeof(B), receiverB }
};
Пробовал по разному, но всё равно всё вокруг objeсt
получалось, какой может быть граммотный подход ?
Ответы (1 шт):
Грамотный подход он всегда относительный. Потому что грамота в различный языках различна. Тема холиварная.
Много параметров в конструкторе говорит о том что у вас возможное нарушение SPR (single responsibility principle) и ваш "GOD class" делает чуть больше чем много Но есть паттерны и я предполагаю что для вашего примера подойдёт паттерн Facade. Прошу заменить что возможно нарушение принципа и возможно подойдёт паттерн Facade.
Существует также и другие возможности регистрации объектов в контейнере когда на выходе возможно получить IEnumerable<IDataReceiver> и просматривать коллекцию ресиверов. Но тут как говорится вкусовщина