第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

為什么 Unity (DI) 在控制器中工作,但在我的服務(wù)層中不起作用?

為什么 Unity (DI) 在控制器中工作,但在我的服務(wù)層中不起作用?

C#
三國(guó)紛爭(zhēng) 2023-07-22 16:39:13
我過(guò)去使用過(guò)很多不同的DI容器,但從未使用過(guò) Unity(特別是Unity 4.0.1)。我正在使用一個(gè).NET MVC具有典型三層架構(gòu)的普通舊應(yīng)用程序。Repository -> Domain -> WebUI。我需要知道我做錯(cuò)了什么,以便我可以讓我注冊(cè)的依賴項(xiàng)在域?qū)由瞎ぷ鳌_@是我的global.asax.protected void Application_Start(){    // ...    IUnityContainer container = new UnityContainer();    RegisterDependencies(container);    DependencyResolver.SetResolver(new WebApplicationDependencyResolver(container));}protected void RegisterDependencies(IUnityContainer container){    container.RegisterType<IUnitOfWork, UnitOfWork>();}這是WebApplicationDependencyResolver上面使用的:namespace WebApplication1.Infrastructure{    public class WebApplicationDependencyResolver : IDependencyResolver    {        private IUnityContainer _container;        public WebApplicationDependencyResolver(IUnityContainer container)        {            _container = container;        }        public object GetService(Type serviceType)        {            try            {                return _container.Resolve(serviceType);            }            catch (Exception)            {                return null;            }        }        public IEnumerable<object> GetServices(Type serviceType)        {            try            {                return _container.ResolveAll(serviceType);            }            catch (Exception)            {                return null;            }        }    }}我的Domain Layer類CustomerService.cs(我在它自己的項(xiàng)目和主項(xiàng)目的文件夾中使用):namespace WebApplication1.Services{    public class CustomerService    {        private readonly IUnitOfWork _uow;        public CustomerService(IUnitOfWork uow)        {            _uow = uow;        }    }}現(xiàn)在,當(dāng)我嘗試CustomerService像這樣調(diào)用控制器中的類時(shí),它不起作用:public ActionResult Index(){    var service = new CustomerService();    return View();}誰(shuí)能指導(dǎo)我正確的方向,開始DI在域?qū)由瞎ぷ鳎?
查看完整描述

1 回答

?
ABOUTYOU

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊

嘗試在控制器中注入服務(wù)而不是注入IUnitOfWork. 然后在控制器方法中使用服務(wù)實(shí)例:


public HomeController(CustomerService service)

{

  _service = service

}


public ActionResult Index()

{

  var model = _service.GetAllCustomers();

  return View(model);

}

這應(yīng)該可行,但讓你的類依賴于另一個(gè)類并不是一個(gè)好主意。依賴關(guān)系應(yīng)該是一個(gè)契約(接口)。您應(yīng)該重構(gòu)CustomerService以提取接口ICustomerService并將其注入控制器中。然后你需要在方法中將其注冊(cè)到容器中RegisterDependencies:


container.RegisterType<ICustomerService, CustomerService>();


查看完整回答
反對(duì) 回復(fù) 2023-07-22
  • 1 回答
  • 0 關(guān)注
  • 148 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)