factory_castle 1.0.0
factory_castle: ^1.0.0 copied to clipboard
An IoC container for Dart inspired by Castle Windsor
factory_castle #
An IoC container for Dart inspired by Castle Windsor.
Sample code involving component registration, dependency injection and service locator style resolution:
final container = FactoryContainer();
container.register(Component.For<ILogger>((c) => Logger('Demo')));
container.register(Component.For((c) => DataRepository(c.resolve())));
container.register(Component.For((c) => ListViewModel(c.resolve(), c.resolve())));
final viewModel = container.resolve<ListViewModel>();
viewModel.update();
As name suggests components are registered as factory deleagates since reflection usage in Dart isn't something you can do easily and in performant way. Each factory delegate recieves FactoryContainer as a parameter so that dependencies can be injected into constructor via resolve(). Dart is good at type inference so you don't need to explicitly specify dependency types. Types are taken from the called constructor parameters.
See the example:
container.register(Component.For((c) => ListViewModel(c.resolve(), c.resolve())));