【Autofac打標籤模式】Component和Autowired
- 2019 年 10 月 26 日
- 筆記
【 Autofac打標籤模式】開源DI框架擴展地址:
https://github.com/yuzd/Autofac.Annotation/wiki
Componet標籤把類型註冊到DI容器
1. 把一個類型註冊到DI容器
- 上面的例子就是把Student類型註冊到容器
2. 把當前類型和父類註冊到DI容器
- 上面的例子就是把Student2類型註冊到容器
- 並且把Person類型也註冊到容器根據Person類型拿到的是Student2的實體
3. 把當前類型和介面註冊到DI容器
- 上面的例子就是把Student3類型註冊到容器
- 並且把ISay也註冊到容器根據ISay類型拿到的是Student3的實體
4. 當繼承了父類或者介面 想要指定註冊類型怎麼辦?
- 上面的例子就是只能通過ISay拿到Student3的實體
- 不能通過Student3類型拿到!!
5. 怎麼指定實例是單例,每次都是新的實例,還是每個Scope一個實例呢?
- 如上圖所示 可以指定AutofacScope屬性
- 如果不指定就是每次獲取的一個新的實例
6. 當同一個類型多次註冊,如何區分得到我想要的?
- 如上圖 ISay類型有2個實現類 Student3 和 Student4 分別指定了 Key的值
- 通過ISay + “Student3” 可以獲取到 Student3的實體
- 通過ISay + “Student4” 可以獲取到 Student4的實體
7.支援註冊類型可以自動實例化對象
- 如上所示,設定AutoActivate = true代表是啟動自動實例化
- AutofacScope = AutofacScope.SingleInstance 代表單例模式
- Student5類型會對象會自動實例化 並且以單例的方式存儲在DI容器內
8.支援設置實例化時運行指定方法
- 如上所示 設置 InitMethod 和 DestroyMethod
- 當實例從DI容器初始化時就會調用 InitMethod
- 當DI容器Dispose的時候會觸發調用DestroyMethod
另外
- InitMethod支援注入
- DestroyMethod只能是無參數方法