我想使用NServiceBus配置文件覆盖Spring.net依赖注入中使用的具体类,以便在Integration Testing中使用。
在我的EndpointConfig
课程中,我正在配置一个组件:
NServiceBus.Configure.Instance.Configurer.ConfigureComponent<RealCommunicator>(ComponentCallModelEnum.None);
(这一点没问题!)
我创建了一个新的个人资料:
public class StubThirdPartyProfile : NServiceBus.IProfile
{
}
实现它的行为类:
public class StubThirdPartyBehaviour : IHandleProfile<StubThirdPartyProfile>
{
public void ProfileActivated()
{
Configure.Instance.Configurer.ConfigureComponent<StubCommunicator>(ComponentCallModelEnum.None);
}
}
StubCommunicator
和RealCommunicator
都实现了相同的接口,我希望该配置文件将删除旧的依赖项并使用StubCommunicator
,但事实并非如此。有没有办法做到这一点?
运行解决方案时,出现以下错误:
Spring.Objects.Factory.UnsatisfiedDependencyException:
Error creating object with name 'Namespace.CommandHandler' :
Unsatisfied dependency expressed through object property 'Communicator':
There are 2 objects of Type [Namespace.ICommunicator] for autowire by type,
when there should have been just 1 to be able to autowire property 'Communicator' of object
我们在NServicebus中使用Spring.net框架,如下所示:
Configure.With().SpringFrameworkBuilder()
.XmlSerializer().Log4Net()
.MsmqTransport()
.IsTransactional(true);
答案 0 :(得分:2)
不要在端点配置类中配置实际组件,而是考虑在处理其他NServiceBus配置文件的类中注册它 - Lite,Integration,Production。