ASP.NET MVC5+EF6+EasyUI 后台管理系統(64)-補充WebApi與Unity注入-配置文件


系列目錄

上一篇演示了WebApi利用Unity注入

很多人問我如何用配置文件來配置注入,本節演示如何利用配置文件來注入,道理是一樣的,跳轉到上一節下載源碼一起來動手!

1.打開源碼定位到文件DependencyRegisterType.cs

紅框部分是必須的,接口和實現的命名空間,程序集,類,所以我們的配置文件也需要擁有以上屬性

2.在Apps.Web新建一個XML文件

並添加以下代碼:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/>
  </configSections>
  <unity>
    <alias alias="" type="" />
    <namespace name="Apps.IBLL" />
    <namespace name="Apps.BLL" />
    <namespace name="Apps.IDAL" />
    <namespace name="Apps.DAL" />


    <assembly name="Apps.IBLL" />
    <assembly name="Apps.BLL" />
    <assembly name="Apps.IDAL" />
    <assembly name="Apps.DAL" />
    
    <container>

      <register type="ISysPersonBLL" mapTo="SysPersonBLL" />
      <register type="ISysPersonRepository" mapTo="SysPersonRepository" />
    </container>
  </unity>
</configuration>

 

其實alias節點啥都不寫也是沒有關系的,只是作為一個別名使用,我們下面全是使用真實名稱

好了,准備調用!

3.修改原來Apps.Core下的UnityConfig.cs為

using Microsoft.Practices.Unity;
using Microsoft.Practices.Unity.Configuration;
using System.Configuration;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using Unity.WebApi;

namespace Apps.Core
{
    public static class UnityConfig
    {
        public static void RegisterComponents()
        {
            var container = BuildUnityContainer();

            DependencyResolver.SetResolver(new UnityDependencyResolver(container));
            GlobalConfiguration.Configuration.DependencyResolver = new Unity.WebApi.UnityDependencyResolver(container);
        }
        /// <summary>
        /// Builds the unity container.
        /// </summary>
        /// <returns></returns>
        private static IUnityContainer BuildUnityContainer()
        {
            var container = new UnityContainer();
            var fileMap = new ExeConfigurationFileMap { ExeConfigFilename = HttpContext.Current.Server.MapPath("~/Unity.Config") };
            Configuration configuration =
                ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
            var unitySection = (UnityConfigurationSection)configuration.GetSection("unity");
            container.LoadConfiguration(unitySection);
            return container;
        }
    }
}

4.最后在Web網站Apps.Web的Global添加調用代碼

UnityConfig.RegisterComponents();

5.運行代碼

控制器代碼:

   public class Default1Controller : BaseController
    {
        [Dependency]
        public ISysPersonBLL m_BLL { get; set; }
        public ActionResult Index()
        {
            ViewBag.Value = m_BLL.GetValue();
            return View();
        }
    }

業務層代碼:

 public class SysPersonBLL:ISysPersonBLL
    {
       [Dependency]
       public ISysPersonRepository m_Rep { get; set; }
        public string GetValue()
        {
            return m_Rep.GetValue();
        }
    }

數據訪問層代碼:

    public partial class SysPersonRepository
    {
        public string GetValue()
        {
            return "直接到DAL";
        }
    }

最后界面展示:

總結:

正確利用注入方式獲得了數據,其實配置形式,更加麻煩,每個站點都要存在一個XML文件。而且配置容易出錯,出現雖然有提示,但是如果一旦數量太多,容易出錯!

代碼下載:http://yunpan.cn/c6XDwfaCY9sff  訪問密碼 8d0e


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM