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還有非常炫砲的寫法 自動搜尋所有class跟Interface 做注入("FoodService");
container.RegisterTypes( //針對所有class Service名稱後有做注入 AllClasses.FromLoadedAssemblies() .Where(t => t.Name.EndsWith("Service")), //搜尋所有Interface做Mapping WithMappings.FromAllInterfaces, //可以定義註冊名稱 WithName.Default, //指定註冊的生命週期 說明 WithLifetime.ContainerControlled);
沒有留言:
張貼留言