2014-09-09 4 views
0

Я использую Rebus. В AutofacContainerAdapter (https://github.com/rebus-org/Rebus/blob/master/src/Rebus.Autofac/AutofacContainerAdapter.cs) они называют следующую строку кода:Регистрация с объектом с AutoFac

builder.Register(a => MessageContext.GetCurrent()).ExternallyOwned(); 

Как настроить мой MessageHandler конструктор, так что Autofac может найти назад этот тип? Если я правильно понимаю, когда я использую IMessageContext в моем конструкторе, он не будет передан, потому что в коде выше .As<IMessageContext>().

+0

но 'GetCurrent()' возвращает 'IMessageContext' - не делает Autofac автоматически зарегистрировать его как это? – mookid8000

+0

Это действительно IMessageContext. в моем конструкторе был другой параметр, который гаснул. Мне нужен IMessageContext для модульного теста, поэтому нельзя использовать MessageContext.GetCurrent(). Или я могу? – dampee

+0

для модульного тестирования. Я рекомендую вводить 'IMessageContext', как и вы, но есть вещь под названием FakeMessageContext, которая может быть использована для создания чего-то фальшивого, который будет возвращен' MessageContext.GetCurrent() ', так что это возможно - это просто (и лучше код IMO), чтобы ввести его :) – mookid8000

ответ

Смежные вопросы