2

使用 Robotlegs 2.0,是否可以在上下文中声明一个单例并将其注入多个类中,每个注入都请求不同的接口?

要注入的类:

 class MyClass implements IFoo, IBar {}

注射部位1:

 class NeedFoo {
    [Inject]
    public var foo:IFoo;
 } 

注射部位2:

 class NeedBar {
    [Inject]
    public var bar:IBar;
 } 

我希望两个注入都针对同一个实例,但是如果我创建两个映射,则每个映射都有自己的实例:

 injector.map( IFoo ).toSingleton( MyClass );
 injector.map( IBar ).toSingleton( MyClass );

所以我最终这样做了:

 var instance:MyClass = new MyClass();
 injector.map( IFoo ).toValue( instance );
 injector.map( IBar ).toValue( instance );

有没有办法说这个对象应该为它实现的任何接口提供,而不是单独为每个接口提供?

4

1 回答 1

2

是的,它是,但它有点令人费解,而且非常不清楚 ATM。我们将来会为它提供一些语法糖,但目前你可以这样做:

injector.map( IFoo ).toSingleton( MyClass );
var provider: DependencyProvider = injector.getMapping( IFoo ).getProvider();
injector.map( IBar ).toProvider( provider );

或者

var provider: DependencyProvider = injector.map( IFoo ).toSingleton( MyClass ).getProvider();
injector.map( IBar ).toProvider( provider );
于 2013-07-17T05:42:47.040 回答