-
Notifications
You must be signed in to change notification settings - Fork 83
Explicit dependencies
Yohan edited this page May 11, 2017
·
2 revisions
class ITransport;
class SocketTransport : public ITransport;
class PersistentTransport : public ITransport
{
public:
explicit PersistentTransport(const std::shared_ptr< ITransport >& transport);
};
builder.registerType< SocketTransport >();
builder.registerType< PersistentTransport >()
.with< ITransport, SocketTransport >()
.as< ITransport >();
By using with
, we tell the container to use SocketTransport
when it is asked to resolve an ITransport
in the context of the constructor of PersistentTransport
.
auto socketTransport = std::make_shared< SocketTransport >();
builder.registerType< PersistentTransport >()
.with< ITransport >(socketTransport)
.as< ITransport >();
This is another way to use with
by providing an instance.
builder.registerType< SocketTransport >();
builder.registerType< PersistentTransport >()
.with< ITransport >([](ComponentContext& context)
{
return context.resolve< SocketTransport >();
}
.as< ITransport >();
All of these methods are equivalent, it is just different flavors for different needs.