NServiceBus ConfigureProperty для конкретного типа из обработчика профиля
Я пытаюсь настроить некоторые свойства конкретной реализации службы, для которой некоторые свойства имеют разные значения в зависимости от того, какой профиль выбран при запуске, но NSB, похоже, не позволяет настраивать свойства при реализации интерфейса. Мы используем Castle Windsor для контейнера, если это актуально.
Мы изначально настроили контейнер с помощью установщика службы, который запускается из класса EndpointConfig, например:
public class EndpointConfig : IConfigureThisEndpoint,
AsA_Publisher,
IWantCustomInitialization
{
public void Init()
{
Configure.With()
.CastleWindsorBuilder(CreateContainer(new ServiceInstaller()))
.UnicastBus()
.XmlSerializer()
;
}
protected WindsorContainer CreateContainer(IWindsorInstaller installer)
{
var container = new WindsorContainer();
container.Register(Component.For<IWindsorContainer>().Instance(container));
container.Install(installer);
container.Kernel.ReleasePolicy = new Castle.MicroKernel.Releasers.NoTrackingReleasePolicy();
return container;
}
}
public class ServiceInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(Component.For<IService>().ImplementedBy<ServiceAdapter>());
// ...
}
}
ServiceAdapter имеет некоторые строковые свойства, которых нет в интерфейсе и которые требуют разных настроек в зависимости от того, какой профиль выбран:
public interface IService
{
}
public class ServiceAdapter : IService
{
public string Url;
}
Обработчик профиля делает:
Configure.Instance.Configurer.ConfigureProperty<ServiceAdapter>
(x => x.Url, "http://url.goes.here");
но при загрузке профиля выкидывает System.InvalidOperationException: Cannot configure property for a type which hadn't been configured yet. Please call 'Configure' first.
,
Можно ли выполнить внедрение свойства в конкретную реализацию, не добавляя свойства в интерфейс?