我们使用包 get_it:^7.1.3 进行依赖注入。我想用相同的抽象类注册一些类(就像它们是接口一样)并得到它们,如下所示:
List<AbstractLass> allClassesWhichImplementAbstractClass=di.sl.get<AbstractLass>();
因此我想通过以下方式注册它:
sl.registerLazySingleton<AbstractLass>(() =>
AbstractLassImpl1());
sl.registerLazySingleton<AbstractLass>(() =>
AbstractLassImpl2());
Run Code Online (Sandbox Code Playgroud)
但当我这样做时,我会得到一个例外:
ArgumentError (Invalid argument(s): Object/factory with type AbstractLass is already registered inside GetIt. )
Run Code Online (Sandbox Code Playgroud)
还有另一种解决方案,我通过以下方式仅注册实现:
sl.registerLazySingleton<AbstractLassImpl1>(() =>
AbstractLassImpl1());
sl.registerLazySingleton<AbstractLassImpl2>(() =>
AbstractLassImpl2());
Run Code Online (Sandbox Code Playgroud)
这是有效的,但我不会通过使用它们的抽象类来访问它们(如果可能的话)
有人能帮我吗?