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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Bug生活2048

.net core项目实战之基于Restful API+Swagger项目搭建

然后右击你的项目,在属性中,勾选下生成XML文档文件,Swagger会自动解析对应的XML进行匹配。

14410
来自专栏木宛城主

基于Socket的网络聊天室编程(第一版)

一:什么是套接字 在网络编程中最常用的方案便是Client/Server (客户机/服务器)模型。在这种方案中客户应用程序向服务器程序请求服务。一个服务程序通常...

30450
来自专栏攻城狮的动态

iOS面试题梳理(三)

39070
来自专栏极乐技术社区

小程序支付详解+源码(客户端+服务端)

小程序的支付调通,和大家分享下(坑) 包括小程序端、java服务器端 和其他方式的微信支付方式区别不大,也都需要经过统一下单、支付结果通知(回调),具体流程如...

25150
来自专栏ASP.NET MVC5 后台权限管理系统

ASP.NET MVC5+EF6+EasyUI 后台管理系统(66)-MVC WebApi 用户验证 (2)

前言: 回顾上一节,我们利用webapi简单的登录并进行了同域访问与跨域访问来获得Token,您可以跳转到上一节下载代码来一起动手。 继续上一篇的文章,我们...

40980
来自专栏一个爱瞎折腾的程序猿

asp.net core使用Swashbuckle.AspNetCore(swagger)生成接口文档

开局一张图,然后开始编,一些基本的asp.net core东西就不再赘述,本文只对Swashbuckle.AspNetCore的几个使用要点进行描述。

18910
来自专栏软件开发 -- 分享 互助 成长

C#调用java程序

前言: 最近跟项目组的人合作一个项目,由于之前我用的是java写的一个与android通信的程序,现在另一个同事来编写界面程序,由于C#编写起来比较方便,而我又...

34160
来自专栏逸鹏说道

Linux 部署ASP.NET SQLite 应用 的坎坷之旅 附demo及源码

Linux 部署ASP.NET SQLite 应用 的坎坷之旅。文章底部 附示例代码。 有一台闲置的Linux VPS,尝试着部署一下.NET 程序,结果就踏上...

40730
来自专栏葡萄城控件技术团队

绑定Oracle Database 到 ActiveReport

ActiveReport 可以和多种数据源交互,包括OLEDB, SQL, XML和集合对象。 在本文中我们将阐述如何绑定Oracle 数据库到 Active...

20690
来自专栏Golang语言社区

package http

要管理代理、TLS配置、keep-alive、压缩和其他设置,创建一个Transport:

23340

扫码关注云+社区

领取腾讯云代金券