mirror of
https://github.com/pese-git/cherrypick.git
synced 2026-01-24 05:25:19 +00:00
implemented toFactory3 method
This commit is contained in:
@@ -79,8 +79,11 @@ class ResolvingContext<T> extends Resolver {
|
|||||||
* Создать фабричный resolver с 3 зависимостями от контейнера
|
* Создать фабричный resolver с 3 зависимостями от контейнера
|
||||||
*/
|
*/
|
||||||
ResolvingContext<T> toFactory3<T1, T2, T3>(T Function(T1, T2, T3) factory) {
|
ResolvingContext<T> toFactory3<T1, T2, T3>(T Function(T1, T2, T3) factory) {
|
||||||
// TODO: implement toFactory3
|
Resolver<T> resolver = FactoryResolver<T>(() => factory(
|
||||||
throw UnimplementedError();
|
_container.resolve<T1>(),
|
||||||
|
_container.resolve<T2>(),
|
||||||
|
_container.resolve<T3>()));
|
||||||
|
return toResolver(resolver);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -161,6 +161,23 @@ void main() {
|
|||||||
expect(container.resolve<DependOnAB>().a, a);
|
expect(container.resolve<DependOnAB>().a, a);
|
||||||
expect(container.resolve<DependOnAB>().b, b);
|
expect(container.resolve<DependOnAB>().b, b);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("Bind to the factory resolves with 3 value", () {
|
||||||
|
final container = DiContainer();
|
||||||
|
final a = AA();
|
||||||
|
final b = BB();
|
||||||
|
final c = CC();
|
||||||
|
container.bind<A>().toValue(a);
|
||||||
|
container.bind<B>().toValue(b);
|
||||||
|
container.bind<C>().toValue(c);
|
||||||
|
container
|
||||||
|
.bind<DependOnABC>()
|
||||||
|
.toFactory3<A, B, C>((a, b, c) => DependOnABC(a, b, c));
|
||||||
|
|
||||||
|
expect(container.resolve<DependOnABC>().a, a);
|
||||||
|
expect(container.resolve<DependOnABC>().b, b);
|
||||||
|
expect(container.resolve<DependOnABC>().c, c);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
ResolverMock<T> _makeResolver<T>(T expectedValue) {
|
ResolverMock<T> _makeResolver<T>(T expectedValue) {
|
||||||
@@ -179,6 +196,10 @@ abstract class B {}
|
|||||||
|
|
||||||
class BB implements B {}
|
class BB implements B {}
|
||||||
|
|
||||||
|
abstract class C {}
|
||||||
|
|
||||||
|
class CC implements C {}
|
||||||
|
|
||||||
class DependOnA {
|
class DependOnA {
|
||||||
final A a;
|
final A a;
|
||||||
|
|
||||||
@@ -191,3 +212,12 @@ class DependOnAB {
|
|||||||
|
|
||||||
DependOnAB(this.a, this.b) : assert(a != null && b != null);
|
DependOnAB(this.a, this.b) : assert(a != null && b != null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class DependOnABC {
|
||||||
|
final A a;
|
||||||
|
final B b;
|
||||||
|
final C c;
|
||||||
|
|
||||||
|
DependOnABC(this.a, this.b, this.c)
|
||||||
|
: assert(a != null && b != null && c != null);
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user