Inject與InjectionToken的使用

2021-09-24 02:34:54 字數 1998 閱讀 8861

di依賴注入是一種編碼模式,建構函式中的引數通過注入器獲取不需要自己建立。@inject是引數修飾符,表示該引數是通過注入的方式獲取。依賴的內容可以是類,也可以是injectiontoken,通過@inject注入的方法使用步驟如下:

1、如果在乙個自己寫的類注入另乙個類

可以通過reflectiveinjector.resolveandcreate形式先建立,再通過get方法獲取例項。

2、如果在元件中或者服務中使用

(1)先在component或者模組中先用provider注入一次,providers:

(2)在construtor中通過@inject注入例項

(3)如果注入的是inte***ce或者字串等則需要先生成injectiontoken.

具體示例如下:

通過一段**表示依賴注入與@inject的使用有a類,b類,b類依賴類a:

class a

}/**

* 通過依賴注入

*/class b

}const injector = reflectiveinjector.resolveandcreate([

},aa

]);const b1 = new b(injector.get(a)); // 通過injector注入

const a1 = new a(new a('dd',23)); // 通過正常的方式注入

const a2 = injector.get(a); //通過injector獲取

const a3 = injector.get(a);

console.log(a2==a3); // injector.get如果無會建立,如果有直接返回

在使用@inject(token) value:token之前,需要通過provider注入值。一般我們在根模組中進行注入,而後在各個類中通過@inject進行注入。

比如在模組中或者元件裝飾器中使用[}]進行預設的初始化

injectiontoken(來自angular中文官網):

並非所有的依賴都是類。 有時候你會希望注入字串、函式或物件。

應用通常會用大量的小型引數來定義配置物件,比如應用的標題或 web api 端點的位址。 這些配置物件不一定總是類的例項。 它們還可能是物件字面量,如下例所示。

apiendpoint: 'api.heroes.com',

title: 'dependency injection'};

typescript 介面不是有效的令牌

// fail! can't use inte***ce as provider token
為非類依賴選擇提供商令牌的解決方案是定義並使用injectiontoken物件。 下面的例子展示了如何定義那樣乙個令牌。

import  from '@angular/core';

//工廠

//注入

this.title = config.title;

}

injectiontoken的用法

class injectiontoken)

nginjectabledef: never | undefined

protected _desc: string

tostring(): string

}/*使用案例*/

Inject集合 DLL隱藏

有時候我們在對目標程序注入後,並不像讓對方發現我們的dll,也就是為了避免被檢查出來,所以我們需要將dll資訊抹去,也就是從peb中的三根鍊錶中斷開儲存dll資訊的節點即可。先看一下peb結構 kd dt nt peb 0x000 inheritedaddressspace uchar 0x001 ...

inject依賴注入的過程

首先需要知道例項是如何建立以及如何被注入的,而這一切都由container這個容器進行管理。1.例項構建 class containerimpl implements container names.add key.getname for entry,set entry map.entryset t...

Ruby 中的inject方法

ruby inject 1 求和 inject 方法的兩種用法 enum.inject init value enum.inject第一種,result 以init value為初始值 第二種,result以element裡的第乙個元素為初始值。1,2,3,4 inject 0 10 1,2,3,4...