Je tente d'injecter un objet dans ma saga. À l'aide du point de terminaison suivant, lorsque le message arrive à la méthode handle de la saga, la propriété est null.Injection de propriété NserviceBus
Le critère d'évaluation:
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
}
Le 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>
et mes Saga accepter des messages comme suit
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);
}
une expection de référence null sera lancée lors d'une tentative d'appeler SaveOrder(). Ai-je configuré l'injection de dépendance correctement?
Brillant. Merci Andreas. Cela a fait l'affaire. – Adam
Il y a maintenant une forme raccourcie avec seulement: Configure.Component (cycle de vie); –