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

本文转自ymnets博客园博客,原文链接:http://www.cnblogs.com/ymnets/p/5754744.html,如需转载请自行联系原作者
相关文章
|
4月前
基于EasyUI的后台管理系统页面原型_示例图_下载地址
基于EasyUI的后台管理系统页面原型_示例图_下载地址
27 0
|
29天前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
28 7
|
27天前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
38 0
|
2月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
36 0
|
2月前
|
开发框架 前端开发 安全
ASP.NET MVC 如何使用 Form Authentication?
ASP.NET MVC 如何使用 Form Authentication?
|
2月前
|
开发框架 .NET
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
93 0
|
5月前
|
物联网 vr&ar 开发者
【专栏】.NET 技术:为开发注入活力
【4月更文挑战第29天】本文探讨了.NET技术的创新,主要体现在三个方面:1) .NET Core实现跨平台开发革命,支持多种操作系统和硬件,如.NET MAUI用于多平台UI;2) 性能提升与生产力飞跃,C#新特性简化编程,JIT和AOT优化提升性能,Roslyn提供代码分析工具;3) 引领现代化应用架构,支持微服务、容器化,内置安全机制。未来,.NET 7将带来更多新特性和前沿技术整合,如量子计算、AI,持续推动软件开发创新。开发者掌握.NET技术将赢得竞争优势。
41 0
|
5月前
|
人工智能 前端开发 开发工具
【专栏】.NET 技术:为开发注入新动力
【4月更文挑战第29天】本文探讨了.NET技术如何为开发注入新动力,分为核心优势、创新应用及挑战与机遇三部分。.NET提供统一多语言开发平台、强大的Visual Studio工具、跨平台能力、丰富的类库和活跃社区支持。在现代开发中,它应用于企业级、Web、移动、云服务和游戏开发。然而,面临性能优化、容器化、AI集成等挑战,.NET需持续创新。开发者应深入学习,抓住技术趋势,共同推动.NET技术进步。
31 0
|
5月前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
68 0
|
5月前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
277 5
下一篇
无影云桌面