|
昨天,我写了一篇文章(参见:ASP.NET MVC 依赖注入),这种实现方式我个人一直感觉不太顺,在写出来与大家一起分享的同时,
也是想让大家提提自己的建议, 今天下载了微软发布的最新的 ASP.NET MVC3 Beta 版,同时也仔细阅读了它的 Release Notes,
让我感觉到惊喜的是,MVC3增加了对依赖注入的支持,增加了一 个 IDependencyResolver 接口定义,真的是很不错,比起我原来的实现要顺畅很多,
还是老方法,上微软牛人们的博客逛一圈看看有没有已经写好的代码,有就拿来用之,没有就只能自己写了,结果让我很失望,也可能是我太笨,
我没有找到一个完整的示例,只有一些代码片断,于是,我将其整理了一翻,也有一点点个人的心得,拿出来,与大家分享一下,
如遇高人请不吝赐教,下面是代码片断。
1、实现 MVC3 Beta 中提供的依赖注入接口 IDependencyResolver ,MyDependencyResolver.cs 的代码:
using System;using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Microsoft.Practices.Unity;
namespace Demo
{
public class MyDependencyResolver : IDependencyResolver
{
#region IDependencyResolver 成员
/// <summary>
/// 依赖注入容器
/// </summary>
private UnityContainer _unityContainer;
/// <summary>
/// 构造
/// </summary>
/// <param name="aUnityContainer">依赖注入容器</param>
public MyDependencyResolver( UnityContainer aUnityContainer )
{
_unityContainer = aUnityContainer;
}
public object GetService( Type aServiceType )
{
try
{
return _unityContainer.Resolve( aServiceType );
}
catch
{
/// 按微软的要求,此方法,在没有解析到任何对象的情况下,必须返回 null,必须这么做!!!!
return null;
}
}
public IEnumerable<object> GetServices( Type aServiceType )
{
try
{
return _unityContainer.ResolveAll( aServiceType );
}
catch
{
/// 按微软的要求,此方法,在没有解析到任何对象的情况下,必须返回空集合,必须这么做!!!!
return new List<object>( );
}
}
#endregion
}
}
NET技术:ASP.NET MVC3 让依赖注入来的更简单(新补充了Ninject示例),转载需保留来源!
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。