我想创建一个能够创建使用依赖注入的类(MyClass,实现抽象类)的新实例的工厂。
我希望工厂看起来像这样:
Factory
export class Factory {
public static makeMyClass() {
return new MyClass();
}
}
但是,当我采用这种方法时,EventAggregator 不会注入到 MyClass 中。
我怎样才能做到这一点?
界面
export abstract class MyClassInterface {
abstract connect();
abstract disconnect();
abstract send(message: string);
}
Class
@inject(EventAggregator)
export class MyClass {
constructor(EventAggregator) {}
connect() {}
disconnect() {}
send(message: string) {}
}
提前致谢!
第一个选项
Use the NewInstance.of http://aurelia.io/docs/fundamentals/dependency-injection#resolvers解析器:
import {inject, NewInstance} from 'aurelia-framework';
@inject(NewInstance.of(MyClass))
export class MyViewModel {
constructor(myClass) {
this.myClass = myClass; //myClass is always a new instance
}
}
第二个选项
使用工厂:
import {inject, EventAggregator} from 'aurelia-framework';
@inject(EventAggregator)
export class MyFactory {
constructor(eventAggregator) {
this.eventAggregator = eventAggregator;
}
public static createMyClass() {
return new MyClass(this.eventAggregator);
}
}
@inject(MyFactory)
export class MyViewModel {
constructor(myFactory) {
this.myClass = myFactory.createMyClass();
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)