c# – 具有同一接口的多个实现的Autofac
发布时间:2020-12-15 06:55:33 所属栏目:百科 来源:网络整理
导读:我正在使用Autofac,并希望有一个接口的多个实现.如何配置Autofac以便根据当前类型来解析依赖关系? 更具体来说,我有一个接口和多个实现应该链接在一起. 让我解释(虚构类): public interface IMessageHandler{ void Handle(Message message);}public class L
我正在使用Autofac,并希望有一个接口的多个实现.如何配置Autofac以便根据当前类型来解析依赖关系?
更具体来说,我有一个接口和多个实现应该链接在一起. 让我解释(虚构类): public interface IMessageHandler { void Handle(Message message); } public class LoggingMessageHandler : IMessageHandler { private IMessageHandler _messageHandler; public LoggingMessageHandler(IMessageHandler messageHandler) { _messageHandler = messageHandler; } public void Handle(Message message) { // log something _messageHandler.Handle(message); } } public class DoSomethingMessageHandler : IMessageHandler { private IMessageHandler _messageHandler; public DoSomethingMessageHandler (IMessageHandler messageHandler) { _messageHandler = messageHandler; } public void Handle(Message message) { // do something _messageHandler.Handle(message); } } 在链的底部可能是一个IMessageHandler,它不会将消息传递给下一个消息. 如果我想要以下链条: TopLevelClass -> LoggingMessageHandler -> DoSomethingMessageHandler -> FinalHandler 我怎么能告诉Autofac >将LoggingMessageHandler传递给TopLevelClass(以履行对IMessageHandler的依赖) 甚至有可能(我已经读过implicit support for IEnumerable)吗?或者我必须在两者之间使用一个额外的课程(一个工厂或某事)? 解决方法
Autofac拥有
Decorators支持.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |