日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

Unity+MVC:实现IDependencyResolver接口需要注意的地方

發布時間:2025/3/17 c/c++ 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unity+MVC:实现IDependencyResolver接口需要注意的地方 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ASP.NET MVC3提供了IDependencyResolver接口,實現該接口,并結合相應的“依賴注入容器”(比如:Unity)可以方便地對Controller進行依賴注入。

本文以Unity為例,說明一下實現IDependencyResolver接口需要注意的地方。

先看一下我們使用的實現代碼:

namespace CNBlogs.Infrastructure.CrossCutting.IoC
{
public class IoCDependencyResolver : IDependencyResolver
{
#region Memebers
private IContainer _currentContainter;
#endregion

#region Constructors
public IoCDependencyResolver(IContainer container)
{
_currentContainter
= container;
}
#endregion

#region IDependencyResolver Members
public object GetService(Type serviceType)
{
return _currentContainter.Resolve(serviceType);
}
public IEnumerable<object> GetServices(Type serviceType)
{
return _currentContainter.ResolveAll(serviceType);
}
#endregion
}
}

這樣實現后,訪問時出現下面的錯誤:

The current type, System.Web.Mvc.IControllerFactory, is an interface and cannot be constructed.
Are you missing a type mapping

從這個錯誤可以分析出,ASP.NET MVC試圖通過Unity解析IControllerFactory的實現,但我們在代碼中并沒有注冊IControllerFactory的實現。

于是,我們手動注冊一下,代碼如下:

_currentContainer.RegisterType<IControllerFactory, DefaultControllerFactory>();

之前的錯誤消失了,卻出現了新的錯誤:

The current type, System.Web.Mvc.IControllerActivator, is an interface and cannot be constructed.
Are you missing a type mapping?

又找不到另外一個接口(IControllerActivator)的實現,難道要手工一個一個注冊?

看來這不是解決之道,需要另辟捷徑...

在codeplex中發現了Unity.MVC3(也是通過Unity實現ASP.NET MVC Contorller的依賴注入),學習了一下它的代碼,發現了解決之道。

原來只需在IDependencyResolver.GetService(Type serviceType)的實現中,判斷一下serviceType是否被注冊,如果沒有被注冊,就返回null。ASP.NET MVC得到null返回值,會自己解析這個接口,這樣問題就解決了,代碼如下:

public object GetService(Type serviceType)
{
if (!_currentContainter.IsRegistered(serviceType))
{
return null;
}
return _currentContainter.Resolve(serviceType);
}

轉載于:https://www.cnblogs.com/dudu/archive/2011/06/09/unity_mvc_idependencyresolver.html

總結

以上是生活随笔為你收集整理的Unity+MVC:实现IDependencyResolver接口需要注意的地方的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。