Кто-нибудь знает, как заполнить это свойство с помощью 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>
Версия с автоматическим кодом - 2.4.4 (еслиэто имеет какое-то значение).
Я могу предоставить больше кода / подробностей, но я подумал, что это даст хорошее представление о том, чего я пытаюсь достичь.
Фоном является то, что мы загружаемсписок транзакций для клиента, и нам нужно рассчитать остаток на счете клиента.Мы хотели бы иметь набор процессоров (по одному на каждый тип транзакции), которые принимают транзакцию и объект сводки в качестве входных данных и выплевывают обновленную версию объекта сводки, которая передается через все процессоры, необходимые для вычисления балансадля одного клиента.Таким образом, мы загружаем клиента, его транзакции и перебираем каждую транзакцию и вызываем объект фабрики, чтобы получить процессор для данной транзакции, и когда у нас есть процессор, мы идем:
state = processor.Process(transaction, state);
, пока мы не обработаем все транзакции.Тогда у нас должен быть баланс.К сожалению, autofac не загружает процессоры, поэтому фабрика возвращает ноль для каждого типа транзакции: /
Заранее спасибо, Lukasz