Кто-нибудь знает, как получить эту собственность населенную autofac:как зарегистрировать коллекцию общих интерфейсов в autofac
public IEnumerable<ITransactionProcessor<TransactionBase>> TransactionHandlers { get; set; }
с этими двумя конкретными реализациями:
public class FeeTransactionProcessor : ITransactionProcessor<FeeTransaction>
public class InterestTransactionProcessor : ITransactionProcessor<InterestTransaction>
Как ни странно, этот код работ хорошо, и я получаю 2 элемента в коллекции, которые оба реализуют ITestTransactionProcessor:
public IEnumerable<ITestTransactionProcessor> TestTransactionHandlers { get; set; }
Примечание:
IEnumerable<ITransactionProcessor<TransactionBase>>
против:
IEnumerable<ITestTransactionProcessor>
версия autofac является 2.4.4 (если это делает никакой разницы).
Я могу предоставить больше кода/деталей, но я думал, что это даст хорошее представление о том, чего я пытаюсь достичь.
Фоном является то, что мы загружаем список транзакций для клиента, и нам нужно рассчитать остаток на счете клиентов. Мы хотели бы иметь набор процессоров (по одному на каждый тип транзакции), которые берут транзакцию и суммирующий объект в качестве входных данных и выплевывают обновленную версию объекта сводки, которая проходит через все процессоры, которые необходимы для расчета баланса для одного клиента. Таким образом, мы загружаем клиент, его операцию и проходные каждую операцию и вызов объекта фабрики, чтобы получить процессор для данной операции, и как только мы имеем процессор мы идем:
state = processor.Process(transaction, state);
, пока мы не обработали все сделки. Тогда мы должны иметь баланс. К сожалению autofac оленьей кожи загрузке процессоров и поэтому завод возвращает нуль для каждого типа сделки:/
Спасибо заранее, Лукаша