Dependency injection 带有参数的Castle Windsor不动产注入
我是新手,所以我感谢你的帮助。我使用Castle Windsor作为带有XML配置的容器。对于我的几个核心服务来说,这是完美的,我只需声明一个名为同一事物的公共属性,它就会按预期注入它。我的大多数核心服务都没有arg构造函数,这些构造函数是现成的。但是如果我有一个核心服务,它本身有它自己的依赖关系,那么如何最好地处理这个问题呢?例如,假设我有一个可配置的消息队列服务:Dependency injection 带有参数的Castle Windsor不动产注入,dependency-injection,castle-windsor,Dependency Injection,Castle Windsor,我是新手,所以我感谢你的帮助。我使用Castle Windsor作为带有XML配置的容器。对于我的几个核心服务来说,这是完美的,我只需声明一个名为同一事物的公共属性,它就会按预期注入它。我的大多数核心服务都没有arg构造函数,这些构造函数是现成的。但是如果我有一个核心服务,它本身有它自己的依赖关系,那么如何最好地处理这个问题呢?例如,假设我有一个可配置的消息队列服务: public interface IQueueService { void SendMessage(string msg
public interface IQueueService {
void SendMessage(string msg);
}
public class SQSService : IQueueService {
private ServiceConfig _config;
public SQSService(ServiceConfig config) {
_config = config;
}
public void SendMessage(string msg){
//do message stuff
}
}
SQSService本身需要一个配置来正确初始化(端点、端口等)。有没有一种简单的方法来配置DI来解析此配置?或者我最好重新分解SQSService,使其不具有这种依赖性 当注入依赖于配置、会话、请求等的内容时,您可以灵活地避免使依赖对象具有与底层源相同的结构(事实上,您应该尽可能多,否则您可能会意外地编写隐式依赖于该结构的代码)。注入所需的属性,而不是配置本身。我不知道如何使用XML配置实现这一点,但我知道fluent API允许使用
.FromAppSettings()
进行注入,或者您可以使用web/app.config来存放配置,使用.FromAppConfig()
,如下所述: