-
Notifications
You must be signed in to change notification settings - Fork 83
Merging containers
Yohan edited this page May 12, 2017
·
2 revisions
It is perfectly sane to provide a ContainerBuilder
by module.
So you would write something like this:
class BusContainerBuilder : public ContainerBuilder
{
public:
BusContainerBuilder
{
registerType< BusConfiguration >()
.as< Configuration::IConfiguration >()
.asSelf()
.singleInstance();
registerType< Serialization::MessageSerializer >()
.as< Serialization::IMessageSerializer >()
.singleInstance();
registerType< Transport::ZmqTransport >().singleInstance();
registerType< Persistence::PersistentTransport >()
.with< Transport::ITransport, Transport::ZmqTransport >()
.as< Persistence::IPersistentTransport >()
.as< Transport::ITransport >()
.singleInstance();
registerType< Core::Bus >()
.as< IBus >()
.as< Dispatch::IMessageDispatchFactory >()
.singleInstance();
}
};
and then somewhere at the beginning of your application:
void initialize(ContainerBuilder& builder)
{
builder.addRegistrations(BusContainerBuilder());
}
addRegistrations
allows to merge registrations from one ContainerBuilder
to another.
A container can be updated by using a ContainerBuilder
.
ContainerBuilder builder;
// register some types, etc.
builder.updateContainer(*container);