2013-07-16 57 views
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); 

有沒有辦法,只是說,這個對象應該爲它實現,而不是單獨爲每一個任何界面來提供?

回答

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); 
+0

是的,它可以用一些糖做的..但它做這份工作!謝謝。 –

+0

某個問題跟蹤器中是否有票? –

+1

Yeps:https://github.com/robotlegs/robotlegs-framework/issues/142 – Creynders

相關問題