首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NServiceBus依赖注入

NServiceBus依赖注入
EN

Stack Overflow用户
提问于 2013-01-04 02:19:42
回答 1查看 3.1K关注 0票数 3

我在这方面遇到了一些麻烦。

AndreasÖhlund在it here上回答了一个问题,但我一直无法使用他给出的建议让它工作。

下面是我的设置:

代码语言:javascript
复制
public abstract class CommandHandler<T> : IHandleMessages<T>, IDomainReadRepository where T : Command
{
    public IDomainRepository DomainRepository { get; set; }

    protected abstract void OnProcess(T command);

    public TAggregate GetById<TAggregate>(Guid id) where TAggregate : IEventProvider, new()
    {
        return DomainRepository.GetById<TAggregate>(id);
    }

    public void Handle(T message)
    {
        OnProcess(message);
        // Domain repository will save.
    }
}

其思想是特定的命令处理程序覆盖OnProcess方法并执行它们的操作,然后DomainRepository将保存所有内容。

下面是我如何注册组件的:

代码语言:javascript
复制
public class EndpointConfig : IConfigureThisEndpoint, AsA_Server, IWantCustomInitialization
{
    public void Init()
    {
        Configure.With().DefiningCommandsAs(c => c.Namespace != null && c.Namespace.EndsWith("Commands"));
        Configure.Instance.DefaultBuilder().Configurer.ConfigureComponent<DomainRepository>(DependencyLifecycle.InstancePerCall);
        Configure.Instance.DefaultBuilder().Configurer.ConfigureComponent<EventStore.Sql.EventStore>(DependencyLifecycle.InstancePerCall);
        Configure.Instance.DefaultBuilder().Configurer.ConfigureComponent<MongoDbObjectSecurityDescriptorRepository>(DependencyLifecycle.InstancePerCall);
        Configure.Instance.DefaultBuilder().Configurer.ConfigureComponent<LocalTenantConfig>(DependencyLifecycle.InstancePerCall);
    }
}

这些都是DomainRepository使用的链条上的所有对象;但是,当我收到命令时,DomainRepository是空的。如果我注释掉注册Autofac所需对象的行,实际上会得到一个错误消息,指出无法创建它(Autofac DependencyResolutionException)。

应该注意的是,所有其他对象都使用构造函数注入(它们取自以前存在的项目)。我尝试将它们更改为使用公共属性注入,但没有任何区别。

如果有人能指出我在这里做错了什么,我将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-04 03:07:48

将初始化方法中的代码移到另一个实现INeedInitialization的类中。在这里,用Configure.Instance代替Configure.With(),也用Configure.Instance.DefaultBuilder()代替。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14144811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档