城堡温莎房产注射与参数

时间:2015-05-12 15:06:28

标签: dependency-injection castle-windsor

我是新手,所以我感谢你的帮助。我使用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重新分解为没有这种依赖性?

1 个答案:

答案 0 :(得分:0)

当注入依赖于配置,会话,请求等的东西时,你可以灵活地摆脱使你的依赖对象具有与底层源相同的结构(事实上,你应该尽可能多,否则你最终可能会意外地编写隐含依赖于该结构的代码)。注入所需的属性,而不是配置本身。我不知道如何使用XML配置完成此操作,但我知道流畅的API允许使用.FromAppSettings()进行注入,或者您可以使用web / app.config来保存您的配置,使用.FromAppConfig()如下所述:

How to instantiate a class based on web.config file with Castle Windsor?