创建在Aurelia中使用依赖注入的类的新实例 [英] Create a new instance of a class that is using dependency injection in Aurelia
本文介绍了创建在Aurelia中使用依赖注入的类的新实例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想创建一个工厂,该工厂能够创建使用依赖项注入的类的新实例(MyClass,实现抽象类).
I want to create a factory that is able to create a new instance of a class (MyClass, implementing an abstract class) that is using dependency injection.
我希望工厂看起来像这样:
I would like the factory to look like this:
export class Factory {
public static makeMyClass() {
return new MyClass();
}
}
但是,当我采用这种方法时,EventAggregator并没有注入MyClass中.
However, the EventAggregator is not injected into MyClass when I take this approach.
我该怎么做?
export abstract class MyClassInterface {
abstract connect();
abstract disconnect();
abstract send(message: string);
}
课程
@inject(EventAggregator)
export class MyClass {
constructor(EventAggregator) {}
connect() {}
disconnect() {}
send(message: string) {}
}
提前谢谢!
推荐答案
第一个选项
使用 NewInstance.of
解析器:
Use the NewInstance.of
resolver:
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();
}
}
这篇关于创建在Aurelia中使用依赖注入的类的新实例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文