天天看點

【Autofac打标簽模式】Component和Autowired

【 Autofac打标簽模式】開源DI架構擴充位址:

https://github.com/yuzd/Autofac.Annotation/wiki

Componet标簽把類型注冊到DI容器

1. 把一個類型注冊到DI容器

【Autofac打标簽模式】Component和Autowired
  • 上面的例子就是把Student類型注冊到容器

2. 把目前類型和父類注冊到DI容器

【Autofac打标簽模式】Component和Autowired
  • 上面的例子就是把Student2類型注冊到容器
  • 并且把Person類型也注冊到容器根據Person類型拿到的是Student2的實體

3. 把目前類型和接口注冊到DI容器

【Autofac打标簽模式】Component和Autowired
  • 上面的例子就是把Student3類型注冊到容器
  • 并且把ISay也注冊到容器根據ISay類型拿到的是Student3的實體

4. 當繼承了父類或者接口 想要指定注冊類型怎麼辦?

【Autofac打标簽模式】Component和Autowired
  • 上面的例子就是隻能通過ISay拿到Student3的實體
  • 不能通過Student3類型拿到!!

5. 怎麼指定執行個體是單例,每次都是新的執行個體,還是每個Scope一個執行個體呢?

【Autofac打标簽模式】Component和Autowired
  • 如上圖所示 可以指定AutofacScope屬性
  • 如果不指定就是每次擷取的一個新的執行個體

6. 當同一個類型多次注冊,如何區分得到我想要的?

【Autofac打标簽模式】Component和Autowired
  • 如上圖 ISay類型有2個實作類 Student3 和 Student4 分别指定了 Key的值
  • 通過ISay + “Student3” 可以擷取到 Student3的實體
  • 通過ISay + “Student4” 可以擷取到 Student4的實體

7.支援注冊類型可以自動執行個體化對象

【Autofac打标簽模式】Component和Autowired
  • 如上所示,設定AutoActivate = true代表是啟動自動執行個體化
  • AutofacScope = AutofacScope.SingleInstance 代表單例模式
  • Student5類型會對象會自動執行個體化 并且以單例的方式存儲在DI容器内

8.支援設定執行個體化時運作指定方法

【Autofac打标簽模式】Component和Autowired
  • 如上所示 設定 InitMethod 和 DestroyMethod
  • 當執行個體從DI容器初始化時就會調用 InitMethod
  • 當DI容器Dispose的時候會觸發調用DestroyMethod

另外

【Autofac打标簽模式】Component和Autowired
  • InitMethod支援注入
  • DestroyMethod隻能是無參數方法

Autowired自動裝配

打在構造方法上 屬性

【Autofac打标簽模式】Component和Autowired

如果您覺得閱讀本文對您有幫助,請點一下“推薦”按鈕,您的“推薦”将是我最大的寫作動力!歡迎各位轉載,轉載文章之後須在文章頁面明顯位置給出作者和原文連接配接,謝謝。

繼續閱讀