Design

Design
asp.net mvc

2017年5月19日 星期五

Unity DI 注入方法


底下為較常用到的Unity注入方法 單一介面
container.RegisterType<ICookService, CookService>();

如果同一介面下 有很多不一樣的Service 只需要後面給他個名稱就好了 用以辨識實作時用
如本篇interface
container.RegisterType<ICookService, FoodService>("FoodService");
container.RegisterType<ICookService, DrinkService>("DrinkService");

當我們實作時需要 後面也是一樣要加上要Resolve的service名稱 這
樣他才知道我是要實作ICookService介面的FoodService 不然他會FoodService DrinkService傻傻分不清楚
var service = container.Resolve("FoodService");
還有非常炫砲的寫法 自動搜尋所有class跟Interface 做注入
            container.RegisterTypes(
            //針對所有class Service名稱後有做注入
            AllClasses.FromLoadedAssemblies()
           .Where(t => t.Name.EndsWith("Service")),
            //搜尋所有Interface做Mapping
            WithMappings.FromAllInterfaces,
            //可以定義註冊名稱
            WithName.Default,
            //指定註冊的生命週期 說明
            WithLifetime.ContainerControlled);

沒有留言:

張貼留言