Dependency injection 带有参数的Castle Windsor不动产注入

Dependency injection 带有参数的Castle Windsor不动产注入,dependency-injection,castle-windsor,Dependency Injection,Castle Windsor,我是新手,所以我感谢你的帮助。我使用Castle Windsor作为带有XML配置的容器。对于我的几个核心服务来说,这是完美的,我只需声明一个名为同一事物的公共属性,它就会按预期注入它。我的大多数核心服务都没有arg构造函数,这些构造函数是现成的。但是如果我有一个核心服务,它本身有它自己的依赖关系,那么如何最好地处理这个问题呢?例如,假设我有一个可配置的消息队列服务: public interface IQueueService { void SendMessage(string msg

我是新手,所以我感谢你的帮助。我使用Castle Windsor作为带有XML配置的容器。对于我的几个核心服务来说,这是完美的,我只需声明一个名为同一事物的公共属性,它就会按预期注入它。我的大多数核心服务都没有arg构造函数,这些构造函数是现成的。但是如果我有一个核心服务,它本身有它自己的依赖关系,那么如何最好地处理这个问题呢?例如,假设我有一个可配置的消息队列服务:

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()
,如下所述: