TypeScriptでInversifyJSを使用しています。InversifyJSのパラメータを持つファクトリー
のは、私が注入され、非注射コンストラクタのパラメータの混合持つクラスがあるとしましょう:
@injectable()
export class MyClass {
constructor(
foo: Foo, // This thing isn't injectable
@inject(Bar) bar: Bar // This thing is
){
...
}
}
は、私はいくつかの他のクラスに、このクラスのファクトリを注入し、その後でそれを呼び出すしたいと思いますが最初のパラメータの値。
@injectable()
export class SomeOtherClass {
constructor(
@inject("Factory<MyClass>") myClassFactory: (foo: Foo) => MyClass
){
const someFoo = new Foo();
const myClass = myClassFactory(someFoo);
}
}
私の質問:私はこの工場を注入できるようになりますInversifyにおけるいくつかのオートマジックはありますか?
bind<interfaces.Factory<MyClass>>("Factory<MyClass>").toFactory(context =>
(foo: Foo) =>
new MyClass(foo, context.kernel.get<Bar>(Bar))
);
しかし、それは私が明示的にnew()
-ing MyClass
とMyClass
のすべての新しい注射用の依存関係があまりにもここで追加する必要がありますよ意味:
私がこれまでに作ってみた最高のはこれです。
良い方法がありますか?おそらくNinject Factory Extensionsのようなパラメータ名に基づくものでしょうか?
ありがとうございます。間違いなく、クラスのすべての依存関係を 'get()'しなければならないことが改善されています。つまり、私はGitHubで別のアプローチを提案するかもしれません。 –