我正在使用機器人腿,我有一堆ServiceResponses,它擴展了一個基類,並對解析器,IParser有依賴關係。我需要連接一個特定於子類的解析器。以下是一個示例:Robotlegs連接屬於基類的依賴關係
ModuleConfigResponse擴展了SimpleServiceResponse並實現了IServiceResponse。
初始部分很容易在上下文線,這裏是一個例子:
injector.mapClass(IServiceResponse, ModuleConfigResponse);
injector.mapClass(IServiceResponse, SimpleServiceResponse, "roomconfig");
..etc
每個響應使用所使用的基類解析器:
injector.mapValue(IParser, ModuleConfigParser, "moduleconfig");
injector.mapValue(IParser, RoomConfigParser, "roomconfig");
的問題是如何把這些連在一起。基類可能有:
[Inject]
public var parser : IParser
但我無法提前定義類型。林想知道是否有一個很好的方式在上下文中接線。目前我已決定通過在ResponseFactory中實例化響應來連接它,以便我在構造函數中手動通過解析器。
injector.mapValue(IParser,ModuleConfigParser,「moduleconfig」);
Mmh我得出結論與另一名開發人員命名注射是取決於環境,在情況或工廠中清楚地看到的情況並非如此糟糕。我認爲標記界面同樣糟糕。你的第一個例子可以,但是有些響應可以使用不同的解析器 - 可重用性。現在我會堅持一個封裝字符串名稱的工廠。 :)。 – serenskye 2012-03-02 14:25:31
是的,他們絕對不是理想的,但他們確實有CT類型檢測的好處。但TBH我從來沒有遇到過你上面描述的情況,可能是由於不同的編碼/設計風格,所以我只是給出了一個解決問題的答案。 – Creynders 2012-03-02 16:13:19