2011-08-10 6 views
3

私はオブジェクトを私のサガに注入しようとしています。次のエンドポイントを使用して、メッセージがサガのハンドルメソッドに到達したときに、プロパティはnullです。NserviceBusプロパティーインジェクション

エンドポイント:

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 
    } 

app.configを

<?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> 

と私の佐賀呼び出そうとしたときに

​​

null参照のexpectionがスローされます、次のようにメッセージを受け付けSaveOrder()。依存関係注入を正しく設定しましたか?あなたのInit()方法で

:(別のクラスにIWantCustomInitializationを実装)

Configure.Instance.ConfigureComponent<OrderRepository>([The lifecycle you want]); 

IWantToRunAtStartupがあるあなただけのコンテナを使用してリポジトリを登録する必要がありますので、

答えて

7

NServiceBusは自動的にあなたのためのプロパティインジェクションを行います構成タスク用ではありません(代わりにIWantCustomInitializationを使用してください)

+1

ブリリアント。ありがとう、アンドレアス。それがトリックでした。 – Adam

+3

これで短縮された形式が次のようになりました。Configure.Component (ライフサイクル); –

関連する問題