创建在Aurelia中使用依赖注入的类的新实例 [英] Create a new instance of a class that is using dependency injection in Aurelia

查看:81
本文介绍了创建在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆