Я использую 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>()
.
но 'GetCurrent()' возвращает 'IMessageContext' - не делает Autofac автоматически зарегистрировать его как это? – mookid8000
Это действительно IMessageContext. в моем конструкторе был другой параметр, который гаснул. Мне нужен IMessageContext для модульного теста, поэтому нельзя использовать MessageContext.GetCurrent(). Или я могу? – dampee
для модульного тестирования. Я рекомендую вводить 'IMessageContext', как и вы, но есть вещь под названием FakeMessageContext, которая может быть использована для создания чего-то фальшивого, который будет возвращен' MessageContext.GetCurrent() ', так что это возможно - это просто (и лучше код IMO), чтобы ввести его :) – mookid8000