有谁知道如何让这个属性由 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 不加载处理器,因此工厂为每种事务类型返回 null :/
在此先感谢,卢卡斯