1

特に DI と Typhoon は初めてです。init メソッドとプロパティ以外のメソッドでオブジェクトを初期化できるかどうか疑問に思っています。私は ObjectMapper と呼ばれるクラスを持っています。ObjectMapper は N 個の ObjectMaps を持つことができます。台風を使用する前に、次のようにマップを作成します。

ObjectMap *map1 = [ObjectMap new]; [map1 mapProperty:@"prop1" toName:@"name1"]; [map1 mapProperty:@"prop2" toName:@"name2"]; ObjectMap *map2 = [ObjectMap new]; [map2 mapProperty:@"prop3" toName:@"name3"]; mapper.maps = @[map1, map2];

マップとマッパー オブジェクトは、アプリケーションの存続期間を通じて変更されることはありません。Typhoon で ObjectMapper と ObjectMaps を作成したいと思います。更新: TyphoonFactoryProvider が役立つようですが、ファクトリによって作成されたオブジェクトを「maps」配列に配置する方法がわかりません。

4

2 に答える 2

2

リスクを冒す準備ができている場合は、メソッド インジェクションをサポートする開発中の Typhoon バージョンを試すことができます。(まだ文書化されていませんが、動作するようです)

-(id) mappedComponent
{  
    return [TyphoonDefinition withClass:[ObjectMap class] injections:^(TyphoonDefinition *definition) {
        [definition injectMethod:@selector(mapProperty:toName:) withParameters:^(TyphoonMethod *method) {
            [method injectParameterWith:@"property"];
            [method injectParameterWith:@"name"];
        }];
    }];
}
于 2014-03-20T10:49:11.033 に答える