首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NserviceBus属性注入

NserviceBus属性注入
EN

Stack Overflow用户
提问于 2011-08-10 15:58:27
回答 1查看 2.1K关注 0票数 3

我正试图在我的传奇中注入一个对象。使用以下端点,当消息到达saga的handle方法时,该属性为空。

端点:

代码语言:javascript
复制
 public class EndpointConfig : IConfigureThisEndpoint, AsA_Server,  IWantToRunAtStartup
        {
            public void Run()
            {
                IOrderRepository orderRepository = new OrderRepository();
                Configure.Instance.Configurer.ConfigureProperty<CreateOrderSaga>(x => x.OrderRepository, orderRepository);
            }

// stop method removed
    }

The app.config

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig, NServiceBus.Core" />
    <section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core" />
  </configSections>

  <MsmqTransportConfig
    InputQueue="Fulfilment.CreateOrder.OrderRecievedMessage"
    ErrorQueue="error"
    NumberOfWorkerThreads="1"
    MaxRetries="3"
  />

  <UnicastBusConfig
   DistributorControlAddress=""
   DistributorDataAddress="">
    <MessageEndpointMappings>
      <add Messages="NServiceBus.Saga.TimeoutMessage, NServiceBus" Endpoint="timeoutmanager" />
    </MessageEndpointMappings>
  </UnicastBusConfig>
</configuration>

和我的Saga接受消息如下

代码语言:javascript
复制
    public class CreateOrderSaga : Saga<CreateOrderSagaData>,
            IAmStartedByMessages<OrderRecievedMessage>,
            IHandleMessages<OrderCompletedMessage>,
            IHandleMessages<OrderCancelledMessage>
        {
            public IOrderRepository OrderRepository { get; set; }
            public void Handle(OrderRecievedMessage message)
            {
var order = new Order();
 OrderRepository.SaveOrder(order);
            }

当尝试调用SaveOrder()时,将抛出空引用预期。我是否正确配置了依赖注入?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-10 17:57:53

NServiceBus将自动为您进行属性注入,因此您只需向容器注册您的存储库:

在你的Init()方法中:(在一个单独的类上实现IWantCustomInitialization )

代码语言:javascript
复制
Configure.Instance.ConfigureComponent< OrderRepository >([The lifecycle you want]);

IWantToRunAtStartup不适用于配置任务(请改用IWantCustomInitialization )

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

https://stackoverflow.com/questions/7007562

复制
相关文章

相似问题

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