2013-07-16 7 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

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

관련 문제